--- sidebarDepth: 1 --- # 相机 ## CameraGetClickModel 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 获取相机当前指向的模型的id,会返回离相机最近的,通常与GetEntityByCoordEvent配合使用 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 获取相机视野大小 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | float | 视野大小( field of view ),单位为角度, 范围为[30, 110]。不修改时默认为45。 | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) fov = virtualWorldComp.CameraGetFov() ``` ## CameraGetPos 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 返回相机位置 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | tuple(float,float,float) | 坐标值(x, y, z), 若虚拟世界没有创建则返回None | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) cameraPos = virtualWorldComp.CameraGetPos() ``` ## CameraGetZoom 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 获取相机的缩放值 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | float | 缩放值 | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) zoom = virtualWorldComp.CameraGetZoom() ``` ## CameraLookAt 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 修改相机朝向 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | targetPos | tuple(float,float,float) | 目标的坐标 | | upVector | tuple(float,float,float) | 相机向上方向的向量, (x,y,z)初始默认为(0,1,0) | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 设置相机移动动画, 会根据当前相机状态与传入参数按时间进行插值显示 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 设置相机视野大小 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fov | float | 视野大小( field of view ),单位为角度, 范围为[30, 110],若fov小于30则设置为30,若fov大于110,则设置为110。不修改时默认为45。 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) virtualWorldComp.CameraSetFov(60) ``` ## CameraSetPos 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 设置相机位置 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | pos | tuple(float,float,float) | 坐标值(x,y,z)初始默认为 (0,0,0),且朝向z轴负方向 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) virtualWorldComp.CameraSetPos((0.0, 6.0, 0.0)) ``` ## CameraSetZoom 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 设置相机缩放 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | zoom | float | 缩放值, 范围为[0.1,100.0],小于0.1则设置为0.1,大于100则设置为100,不修改时默认为1。 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python import client.extraClientApi as clientApi virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId()) virtualWorldComp.CameraSetZoom(2.0) ``` ## CameraStopActions 客户端 method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient - 描述 停止相机移动动画 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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() ```