346 lines
8.5 KiB
Markdown
346 lines
8.5 KiB
Markdown
---
|
||
sidebarDepth: 1
|
||
---
|
||
# 相机
|
||
|
||
## CameraGetClickModel
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
获取相机当前指向的模型的id,会返回离相机最近的,通常与GetEntityByCoordEvent配合使用
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| int | 模型的id, 相机没有指向模型则返回-1 |
|
||
|
||
- 备注
|
||
- 模型需要设置包围盒才能响应点击
|
||
|
||
- 示例
|
||
|
||
```python
|
||
# 当玩家点击屏幕时获取点击位置的模型的id
|
||
import mod.client.extraClientApi as clientApi
|
||
class MyClientSystem(ClientSystem):
|
||
def __init__(self, namespace, name):
|
||
ClientSystem.__init__(self, namespace, name)
|
||
self.ListenForEvent('Minecraft', 'Engine', 'GetEntityByCoordEvent', self, self.click)
|
||
self.initModel()
|
||
|
||
def initModel(self):
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
id = virtualWorldComp.ModelCreateObject("datiangou", "run")
|
||
# 设置了包围盒才能响应点击
|
||
virtualWorldComp.ModelSetBoxCollider(id, (2.0, 2.0, 2.0), (0.0, 0.0, 0.0))
|
||
|
||
def click(self, args):
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
id = virtualWorldComp.CameraGetClickModel()
|
||
if id > 0:
|
||
print("select:", id)
|
||
```
|
||
|
||
|
||
|
||
## CameraGetFov
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
获取相机视野大小
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| float | 视野大小( field of view ),单位为角度, 范围为[30, 110]。不修改时默认为45。 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
fov = virtualWorldComp.CameraGetFov()
|
||
```
|
||
|
||
|
||
|
||
## CameraGetPos
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
返回相机位置
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| tuple(float,float,float) | 坐标值(x, y, z), 若虚拟世界没有创建则返回None |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
cameraPos = virtualWorldComp.CameraGetPos()
|
||
```
|
||
|
||
|
||
|
||
## CameraGetZoom
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
获取相机的缩放值
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| float | 缩放值 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
zoom = virtualWorldComp.CameraGetZoom()
|
||
```
|
||
|
||
|
||
|
||
## CameraLookAt
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
修改相机朝向
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| targetPos | tuple(float,float,float) | 目标的坐标 |
|
||
| upVector | tuple(float,float,float) | 相机向上方向的向量, (x,y,z)初始默认为(0,1,0) |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否修改成功 |
|
||
|
||
- 备注
|
||
- 相机初始默认朝向为-z轴
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraLookAt((0.0, 0.0, -10.0), (0.0, 1.0, 0.0))
|
||
```
|
||
|
||
|
||
|
||
## CameraMoveTo
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
设置相机移动动画, 会根据当前相机状态与传入参数按时间进行插值显示
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| pos | tuple(float,float,float) | 目标点的坐标 |
|
||
| targetPos | tuple(float,float,float) | 到达目标点后朝向的位置 |
|
||
| upVector | tuple(float,float,float) | 到达目标点后相机向上方向的向量 |
|
||
| zoom | float | 到达目标点相机的缩放值 |
|
||
| time | float | 单位秒,动作时长(大于0的浮点数)。为了镜头连贯性,相机的运动与实际帧率有关,默认以60帧计算,会因实际帧率波动稍有偏差。 |
|
||
| ease | TimeEaseType | 时间变化函数, 默认值为clientApi.GetMinecraftEnum().TimeEaseType.linear, 参数不在枚举值中也当作linear |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraMoveTo((0.0, 0.0, -10.0), (1.0, 1.0, -10.0), (0.0,1.0, 0.0), 1.0, 3.0, clientApi.GetMinecraftEnum().TimeEaseType.linear)
|
||
```
|
||
|
||
|
||
|
||
## CameraSetFov
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
设置相机视野大小
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| fov | float | 视野大小( field of view ),单位为角度, 范围为[30, 110],若fov小于30则设置为30,若fov大于110,则设置为110。不修改时默认为45。 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraSetFov(60)
|
||
```
|
||
|
||
|
||
|
||
## CameraSetPos
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
设置相机位置
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| pos | tuple(float,float,float) | 坐标值(x,y,z)初始默认为 (0,0,0),且朝向z轴负方向 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraSetPos((0.0, 6.0, 0.0))
|
||
```
|
||
|
||
|
||
|
||
## CameraSetZoom
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
设置相机缩放
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| zoom | float | 缩放值, 范围为[0.1,100.0],小于0.1则设置为0.1,大于100则设置为100,不修改时默认为1。 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraSetZoom(2.0)
|
||
```
|
||
|
||
|
||
|
||
## CameraStopActions
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
停止相机移动动画
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否停止成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
virtualWorldComp.CameraMoveTo((0.0, 0.0, -10.0), (1.0, 1.0, -10.0), (0.0,1.0, 0.0), 1.0, 3.0, clientApi.GetMinecraftEnum().TimeEaseType.linear)
|
||
virtualWorldComp.CameraStopActions()
|
||
```
|
||
|
||
|
||
|