Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/虚拟世界/相机.md
2025-03-17 13:24:39 +08:00

346 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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()
```