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

8.5 KiB
Raw Blame History

sidebarDepth
sidebarDepth
1

相机

CameraGetClickModel

客户端

method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient

  • 描述

    获取相机当前指向的模型的id会返回离相机最近的通常与GetEntityByCoordEvent配合使用

  • 参数

  • 返回值

    数据类型
    说明
    int 模型的id, 相机没有指向模型则返回-1
  • 备注

    • 模型需要设置包围盒才能响应点击
  • 示例

# 当玩家点击屏幕时获取点击位置的模型的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。
  • 示例

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
  • 示例

import client.extraClientApi as clientApi
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
cameraPos = virtualWorldComp.CameraGetPos()

CameraGetZoom

客户端

method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient

  • 描述

    获取相机的缩放值

  • 参数

  • 返回值

    数据类型
    说明
    float 缩放值
  • 示例

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轴
  • 示例

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 是否设置成功
  • 示例

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 是否设置成功
  • 示例

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 是否设置成功
  • 示例

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 是否设置成功
  • 示例

import client.extraClientApi as clientApi
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
virtualWorldComp.CameraSetZoom(2.0)

CameraStopActions

客户端

method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient

  • 描述

    停止相机移动动画

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否停止成功
  • 示例

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