Skip to content

摄像机 ​

AddCameraAroundEntityMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    给相机添加对实体环绕运动器

  • 参数

    参数名
    数据类型
    说明
    eIDstr要环绕的某个实体的ID
    angularVelocityfloat圆周运动的角速度(弧度/秒)
    axistuple(float,float,float)圆周运动的轴,决定了在哪个平面上做圆周运动,默认为(0, 1, 0)
    lockDirbool是否在运动器生效时锁定相机的朝向,不锁定则相机的朝向会随着运动而改变,默认为False。
    stopRadfloat停止该运动器所需要的弧度,当stopRad为0时,该运动器会一直运行,默认为0
    radiusfloat环绕半径,当设置为-1时环绕运动器使用当前与目标的距离作为半径,当设置为非负数时表示按设定的值作为环绕半径,默认为-1
  • 返回值

    数据类型
    说明
    int运动器ID,添加失败时返回-1
  • 备注

    • 环绕运动器可叠加多个,且可与速度运动器互相叠加。当有多个运动器叠加时,位置为各个运动器计算出的瞬时向量之和,朝向以后添加的运动器设置的朝向为准。
    • 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用SetCanDrag接口屏蔽玩家的视角操作。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
axis=(-1, 1, 1)
mID = comp.AddCameraAroundEntityMotion(eID, 1.0, axis, lockDir=False, stopRad=0, radius=2.0)

AddCameraAroundPointMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    给相机添加对点环绕运动器

  • 参数

    参数名
    数据类型
    说明
    centertuple(float,float,float)要环绕的圆心点坐标
    angularVelocityfloat圆周运动的角速度(弧度/秒)
    axistuple(float,float,float)圆周运动的轴,决定了在哪个平面上做圆周运动,默认为(0, 1, 0)
    lockDirbool是否在运动器生效时锁定相机的朝向,不锁定则相机的朝向会随着运动而改变,默认为False。
    stopRadfloat停止该运动器所需要的弧度,当stopRad为0时,该运动器会一直运行,默认为0
  • 返回值

    数据类型
    说明
    int运动器ID,添加失败时返回-1
  • 备注

    • 环绕运动器可叠加多个,且可与速度运动器互相叠加。当有多个运动器叠加时,位置为各个运动器计算出的瞬时向量之和,朝向以后添加的运动器设置的朝向为准。
    • 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用SetCanDrag接口屏蔽玩家的视角操作。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
center = (0, 8, 0)
axis=(-1, 1, 1)
mID = comp.AddCameraAroundPointMotion(center, 1.0, axis, lockDir=False, stopRad=0)

AddCameraTrackMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    给相机添加轨迹运动器

  • 参数

    参数名
    数据类型
    说明
    targetPostuple(float,float,float)轨迹终点
    duraTimefloat到达终点所需要的时间
    startPostuple(float,float,float)轨迹起点,默认为None,表示以调用StartCameraMotion的位置作为起点。
    relativeCoordbool是否使用相对坐标设置起点和终点,默认为False。
    isLoopbool是否循环,若设为True,则相机会在起点和终点之间往复运动,默认为False。
    targetRottuple(float,float,float)相机到达targetPos时的朝向,受参数relativeCoord影响,默认为None,表示使用调用StartCameraMotion时的朝向。
    startRottuple(float,float,float)相机到达startPos时的朝向,受参数relativeCoord影响,默认为None,表示使用调用StartCameraMotion时的朝向。
    useVelocityDirbool是否使用运动中的速度方向作为朝向,默认为False,若为True,则参数targetRot和startRot无效
    easeTimeEaseType时间变化函数, 默认值为clientApi.GetMinecraftEnum().TimeEaseType.linear, 参数不在枚举值中也当作linear
  • 返回值

    数据类型
    说明
    int运动器ID,添加失败时返回-1
  • 备注

    • 轨迹运动器不可叠加,仅能添加一个。相机会在运动器停止后自动回到原始状态。
    • 运动器的相对坐标设置(relativeCoord)是根据启动运动器时的相机位置计算所得,并不是在添加运动器时计算。 使用相对坐标时,是以相机自身的局部坐标系(右手坐标系)为参考。 引擎中的相机镜头默认朝向自身局部坐标系的-Z轴方向,当设置朝向时,实际上是设置了相机的Z轴的方位角,比如设置startRot=(0,0),相机镜头会朝向世界坐标的-Z轴方向。
    • 设置朝向后会根据相应的参数计算出最终朝向,若此时的targetRot > startRot,则会顺时针旋转,反之逆时针旋转。
    • 当相机被设置为lock后,添加相机轨迹运动器相关的接口失效!
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
target = (5, 0, 0)
rot1 = (0, 0, 0)
rot2 = (0, 360, 0)
mID = comp.AddCameraTrackMotion(target, 3.0, startPos=None, relativeCoord=True, isLoop=False, targetRot=rot1, startRot=rot2, useVelocityDir=True, ease = clientApi.GetMinecraftEnum().TimeEaseType.linear)

AddCameraVelocityMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    给相机添加速度运动器

  • 参数

    参数名
    数据类型
    说明
    velocitytuple(float,float,float)速度,包含大小、方向
    acceleratetuple(float,float,float)加速度,包含大小、方向,默认为None,表示没有加速度
    useVelocityDirbool是否使用当前速度的方向作为此刻相机的朝向,默认为True
  • 返回值

    数据类型
    说明
    int运动器ID,添加失败时返回-1
  • 备注

    • 速度运动器可叠加多个,且可与环绕运动器互相叠加。当有多个运动器叠加时,相机的朝向以后添加的运动器设置的朝向为准。
    • 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用SetCanDrag接口屏蔽玩家的视角操作。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
velocity = (0, 0, 1)
accelerate = (0, 0, -1)
mID = comp.AddCameraVelocityMotion(velocity, accelerate, useVelocityDir=True)

DepartCamera ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    分离玩家与摄像机

  • 参数

    无

  • 返回值

    无

  • 备注

    • 分离之后,可以看到玩家四周,旋转镜头时玩家面向的方向不再跟随镜头旋转而变化。注意,分离镜头后乘船时,船的组件minecraft:rideable中的lock_rider_rotation字段将失去效果。另外,在骑乘马或者其他生物的情况下,分离镜头后由于玩家的方向不再跟随镜头旋转,因此骑乘时无法进行转向,请注意这一点。
    • 注意,使用后会默认解除视角移动锁定,效果等同 comp.LockModCameraYaw(0) # 解除锁定左右视角 comp.LockModCameraPitch(0) # 解除锁定上下视角
    • 该接口的效果会与lockcamera互相覆盖
  • 示例

python
import mod.client.extraClientApi as clientApi
# 第三人称锁定视角例子
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.LockModCameraYaw(1) # 锁定左右视角
comp.LockModCameraPitch(1) # 锁定上下视角
comp.SetCameraOffset((0, 0, 15))
comp.SetCameraRotation((45.0, 0.0, 0.0))

GetAspectRatio ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取画面宽高比

  • 参数

    无

  • 返回值

    数据类型
    说明
    float画面宽高比(宽度/高度)
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
aspect = comp.GetAspectRatio()

GetCameraAnchor ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取相机锚点

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float,float)锚点偏移量
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraAnchor()

GetCameraMotions ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取相机上的所有运动器

  • 参数

    无

  • 返回值

    数据类型
    说明
    dict运动器集合,key值代表运动器mID,value值代表运动器类型0:轨迹运动器、1:速度运动器、2:环绕运动器
  • 备注

    • 运动器非人为停止后会被移除。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
motions = comp.GetCameraMotions()
# motions = {
#   0:1,
#   1:2
# }

GetCameraOffset ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取摄像机偏移量

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float,float)偏移量
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraOffset()

GetCameraPitchLimit ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取摄像机上下角度限制值

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float)上下角度限制值
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraPitchLimit()

GetCameraRotation ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取摄像机的朝向

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float,float)朝向,分别代表Pitch(俯仰角),Yaw(偏航角),Roll(翻滚角)的角度
  • 备注

    • 若在使用SetCameraRotation立马调用该接口,会得到修改前的结果,因为摄像机是在逻辑帧之间插值移动变化的,而不是马上改变。
    • 与F3显示的相机调试信息的Pitch、Yaw相反。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
rot = comp.GetCameraRotation()

GetForward ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    返回相机向前的方向

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float,float)向前的方向
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetForward()

GetFov ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取视野大小

  • 参数

    无

  • 返回值

    数据类型
    说明
    float即视频设置中的视野,单位为角度
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
fov = comp.GetFov()

GetFpHeight ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取本地玩家当前状态下,第一人称视角时的摄像机高度偏移量。游泳时,滑翔时以及普通状态下会有所不同

  • 参数

    无

  • 返回值

    数据类型
    说明
    float高度偏移量
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
heightOffset = comp.GetFpHeight()

GetNearFarPlane ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取近远裁剪面距离

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float)依次为近裁剪面距离与远裁剪面距离
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
near, far = comp.GetNearFarPlane()

GetPerspective ​

客户端

method in mod.client.component.playerViewCompClient.PlayerViewCompClient

  • 描述

    获取当前的视角模式

  • 参数

    无

  • 返回值

    数据类型
    说明
    int0:第一人称视角;1:第三人称视角;2:前视第三人称视角
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
persp = comp.GetPerspective()

GetPosition ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    返回相机中心

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(float,float,float)相机中心位置
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetPosition()

GetProjectionMatrix ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取当前帧的相机投影矩阵,为标准透视投影矩阵,开发者可自行计算

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(tuple(float,float,float,float),tuple(float,float,float,float),tuple(float,float,float,float),tuple(float,float,float,float))嵌套4x4投影矩阵,外层为行、内层为列,使用projMat[row][col]访问第row行第col列元素,若当前不在游戏场景内则返回None
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
projMat = comp.GetProjectionMatrix()
# 取出第1行第1列元素(索引从0开始计算)
element = projMat[0][0]

GetViewMatrix ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    获取视图矩阵,为以相机位置为原点的相对空间视图矩阵(右手系),即仅描述相机朝向的旋转矩阵,不含相机位置平移,开发者可自行计算

  • 参数

    无

  • 返回值

    数据类型
    说明
    tuple(tuple(float,float,float,float),tuple(float,float,float,float),tuple(float,float,float,float),tuple(float,float,float,float))嵌套4x4视图矩阵,外层为行、内层为列,使用viewMat[row][col]访问第row行第col列元素。矩阵为相对相机位置的空间(坐标原点在相机位置),做世界坐标变换时需先减去相机位置(WorldToScreenPoint等已处理),若当前不在游戏场景内则返回None
  • 备注

    • 该矩阵包含玩家完整视角(俯仰/翻滚),与GetWorldRayFromScreenPoint的射线方向一致;平移列为(0,0,0,1),属于相对相机位置空间
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
viewMat = comp.GetViewMatrix()
# 取出第2行第3列元素(索引从0开始计算)
element = viewMat[1][2]

GetWorldRayFromScreenPoint ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    将屏幕坐标转换为一条世界射线,可用于自定义拾取、瞄准辅助等玩法

  • 参数

    参数名
    数据类型
    说明
    screenXfloat屏幕X坐标(像素),以屏幕左上角为原点,取值范围为[0,视口宽],屏幕中心的X坐标为视口宽/2
    screenYfloat屏幕Y坐标(像素),以屏幕左上角为原点,取值范围为[0,视口高],屏幕中心的Y坐标为视口高/2
  • 返回值

    数据类型
    说明
    dict射线数据,包含origin与direction两个键:origin为射线原点的世界坐标(近平面上的点),类型为tuple(float,float,float),对应相机当前所在位置,玩家和相机未移动时该值保持不变;direction为射线方向的单位向量,类型为tuple(float,float,float),长度恒为1,与玩家当前视角一致
  • 备注

    • direction三个分量取值范围均为[-1,1],分别表示射线在世界坐标系三个轴上的方向分量:第1个元素为X分量(正为东,负为西)、第2个元素为Y分量(正为上,负为下)、第3个元素为Z分量(正为南,负为北),绝对值越大表示该方向成分越多
    • 屏幕坐标必须使用真实渲染视口坐标(可通过GetScreenViewInfo获取视口宽高)
    • 射线方向与玩家屏幕中看到的画面严格一致:屏幕中心对应的射线即玩家准星瞄准方向,屏幕四角对应的射线分别指向画面的四个角落
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
width, height, _, _ = clientApi.GetEngineCompFactory().CreateGame(levelId).GetScreenViewInfo()
ray = comp.GetWorldRayFromScreenPoint(width / 2, height / 2)
origin = ray['origin']
direction = ray['direction']

IsModCameraLockPitch ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    是否锁定摄像机上下角度

  • 参数

    无

  • 返回值

    数据类型
    说明
    bool是否锁定
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockPitch()

IsModCameraLockYaw ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    是否锁定摄像机左右角度

  • 参数

    无

  • 返回值

    数据类型
    说明
    bool是否锁定
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockYaw()

LockCamera ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    锁定摄像机

  • 参数

    参数名
    数据类型
    说明
    lockPostuple(float,float,float)世界坐标
    lockRottuple(float,float,float)摄像机的角度(俯仰角,偏航角,横滚角)
  • 返回值

    数据类型
    说明
    bool设置是否成功
  • 备注

    • 锁定摄像机时只是锁定画面视角,玩家仍然可以移动
    • 该接口的效果会与departcamera互相覆盖
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
# 把摄像机固定在(0, 6, 0),并且30度俯视,朝向世界z轴正方向
comp.LockCamera((0, 6, 0), (30, 0, 0))

LockModCameraPitch ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    锁定摄像机上下角度(第三人称下生效,锁定后不能上下调整视角)

  • 参数

    参数名
    数据类型
    说明
    enableint1:锁定 0:解锁
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraPitch(1)

LockModCameraYaw ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    锁定摄像机左右角度(第三人称下生效,锁定后不能通过鼠标左右调整视角)

  • 参数

    参数名
    数据类型
    说明
    enableint1:锁定 0:解锁
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraYaw(1)

LockPerspective ​

客户端

method in mod.client.component.playerViewCompClient.PlayerViewCompClient

  • 描述

    锁定玩家的视角模式

  • 参数

    参数名
    数据类型
    说明
    lockint0:第一人称视角;1:第三人称视角;2:前视第三人称视角 其他值:解除锁定
  • 返回值

    数据类型
    说明
    bool是否锁定成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.LockPerspective(1)

RemoveCameraMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    移除相机上的某个运动器

  • 参数

    参数名
    数据类型
    说明
    motionIdint要移除的某个运动器的ID
  • 返回值

    数据类型
    说明
    bool是否成功移除
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.RemoveCameraMotion(mID)

ResetCameraBindActorId ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    将摄像机重新绑定回主角身上

  • 参数

    无

  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.ResetCameraBindActorId()

ResetCameraPos ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    重置相机位置模式,使相机恢复跟随玩家。用于取消SetCameraPos设置的独立相机位置。

  • 参数

    无

  • 返回值

    数据类型
    说明
    None无返回值
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
# 先设置相机位置
comp.SetCameraPos((100, 80, 100))
# 之后恢复相机跟随玩家
comp.ResetCameraPos()

SetCameraAnchor ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置相机锚点

  • 参数

    参数名
    数据类型
    说明
    offsettuple(float,float,float)锚点偏移量
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 备注

    • (1) 调用了该接口会对第一人称下客户端的交互中心进行同样的偏移,如果需要修改第三人称的交互中心可使用SetPickCenterOffset (2) 在第一人称调高了摄像头会导致交互被撤销,这是由于服务端的交互中心还是在人物的位置,需要使用SetInteracteCenterOffset进行修正 (3) 在第一人称调高了摄像头会导致无法交互到地面或者远距离的方块,可以使用SetPickRange修改客户端的交互半径,使用SetPlayerInteracteRange修改服务端的交互半径.
    • 注:当前客户端能修改交互中心的有SetCameraAnchor修改第一人称,SetPickCenterOffset修改第三人称。服务端能使用SetInteracteCenterOffset修改玩家交互中心(服务端无第几人称概念)
    • 与SetCameraOffset不同的是,该接口改变的是相机的轨道的圆心位置。对第一人称和第三人称模式均生效,需要注意的是,改变后,鼠标或者触屏旋转,最终绕该圆心运动,不再绕玩家为中心。可以简单理解为,默认anchor为玩家中心。
    • 注意,设置后的效果不会存档
    • 注意,如果摄像头进入墙体里面会出现透视的情况,在联机模式时可能会破坏游戏的平衡,请谨慎使用
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraAnchor((0,1,0))

SetCameraBindActorId ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    将摄像机绑定到目标实体身上(调用者与目标必须在同一个dimension,同时需要在加载范围之内,若绑定后目标离开了范围或者死亡,则会自动解除绑定)

  • 参数

    参数名
    数据类型
    说明
    targetIdstr目标实体id
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraBindActorId('1234')

SetCameraDistanceFixed ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置相机弹簧臂固定,即设置当相机遇到阻挡时是否压缩与人物之间的距离

  • 参数

    参数名
    数据类型
    说明
    isFixedbool是否固定相机距离
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 备注

    • 注意,当设置为True时,如果摄像头进入墙体里面会出现透视的情况,在联机模式时可能会破坏游戏的平衡,请谨慎使用
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraDistanceFixed(True)

SetCameraOffset ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置摄像机偏移量

  • 参数

    参数名
    数据类型
    说明
    offsettuple(float,float,float)偏移量
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 备注

    • 注意,该接口仅改变第三人称的相机(包括前视第三人称和后视第三人称)的偏移量,对第一人称模式下的相机无效。
    • 与SetCameraAnchor不同的是,该接口改变的是相机的位置偏移值,不会对相机轨道的圆心位置进行改变。
    • 注意,设置后的效果不会存档
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraOffset((1, 1, 1))

SetCameraPitchLimit ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置摄像机上下角度限制值,默认是(-90,90)

  • 参数

    参数名
    数据类型
    说明
    limittuple(float,float)上下角度限制值
  • 返回值

    数据类型
    说明
    bool是否成功
  • 备注

    • 注意,设置后的效果不会存档
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.SetCameraPitchLimit((-30, 30))

SetCameraPos ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置相机中心的位置

  • 参数

    参数名
    数据类型
    说明
    postuple(float,float,float)位置
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 备注

    • 注意,设置后的效果不会存档。
    • 需先调用DepartCamera()接口分离相机,再调用这个接口后相机会自动进入独立位置模式(不跟随玩家),如需恢复相机跟随玩家,请调用ResetCameraPos。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.SetCameraPos((1, 1, 1))

SetCameraRotation ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设定摄像机的朝向

  • 参数

    参数名
    数据类型
    说明
    rottuple(float,float,float)朝向,其中3个值分别代表Pitch(俯仰角),Yaw(偏航角),Roll(翻滚角)的角度。如果传进来的tuple长度为2,则Roll(翻滚角)的角度默认为0。
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 备注

    • 与F3显示的相机调试信息的Pitch、Yaw相反。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraRotation((1, 1, 1))

SetFov ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    设置视野大小

  • 参数

    参数名
    数据类型
    说明
    fovfloat单位为角度, 范围为[30, 110],若fov小于30则设置为30,,若fov大于110,则设置为110.
  • 返回值

    数据类型
    说明
    bool设置是否成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetFov(60)

SetPerspective ​

客户端

method in mod.client.component.playerViewCompClient.PlayerViewCompClient

  • 描述

    设置视角模式

  • 参数

    参数名
    数据类型
    说明
    perspint0:第一人称视角;1:第三人称视角;2:前视第三人称视角
  • 返回值

    数据类型
    说明
    bool设置是否成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.SetPerspective(1)

SetPlayerFovScale ​

客户端

method in mod.client.component.playerViewCompClient.PlayerViewCompClient

  • 描述

    将渲染实际使用的fov变为设置中的fov乘以fovScale,fovScale越接近0,其效果越接近原版望远镜效果

  • 参数

    参数名
    数据类型
    说明
    fovScalefloat有效范围为[0,100]
  • 返回值

    数据类型
    说明
    bool是否设置成功
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
print(comp.SetPlayerFovScale(0.5))

SetSpeedFovLock ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    是否锁定相机视野fov,锁定后不随速度变化而变化

  • 参数

    参数名
    数据类型
    说明
    isLockedbool是否锁定
  • 返回值

    无

  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetSpeedFovLock(True)

StartCameraMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    启动相机上的某个运动器

  • 参数

    参数名
    数据类型
    说明
    motionIdint要启动的某个运动器的ID
  • 返回值

    数据类型
    说明
    bool是否成功启动
  • 备注

    • 启动运动器后相机的位置朝向变化会同步更改player的朝向,若要避免修改,可以使用DepartCamera接口。
    • 相机第一人称模式下,屏幕会渲染出player的手臂,此时手臂位置与相机位置无关。
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.StartCameraMotion(mID)

StopCameraMotion ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    停止相机上的某个运动器

  • 参数

    参数名
    数据类型
    说明
    motionIdint要停止的某个运动器的ID
  • 返回值

    数据类型
    说明
    bool是否成功停止
  • 备注

  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.StopCameraMotion(mID)

UnDepartCamera ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    绑定玩家与摄像机

  • 参数

    无

  • 返回值

    无

  • 备注

    • 绑定之后,只能看到玩家背部
    • 注意,使用后会默认解除视角移动锁定,效果等同 comp.LockModCameraYaw(0) # 解除锁定左右视角 comp.LockModCameraPitch(0) # 解除锁定上下视角
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.UnDepartCamera()

UnLockCamera ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    解除摄像机锁定

  • 参数

    无

  • 返回值

    数据类型
    说明
    bool设置是否成功
  • 备注

    • 注意,使用后会默认解除视角移动锁定,效果等同 comp.LockModCameraYaw(0) # 解除锁定左右视角 comp.LockModCameraPitch(0) # 解除锁定上下视角
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.UnLockCamera()

WorldToScreenPoint ​

客户端

method in mod.client.component.cameraCompClient.CameraComponentClient

  • 描述

    将世界坐标转换为屏幕坐标,可用于UI指示箭头、血条跟随等玩法

  • 参数

    参数名
    数据类型
    说明
    xfloat世界X坐标
    yfloat世界Y坐标
    zfloat世界Z坐标
  • 返回值

    数据类型
    说明
    dict屏幕坐标数据,包含screenX(屏幕X坐标,float)、screenY(屏幕Y坐标,float)、depth(归一化深度,float)、isInScreen(是否在屏幕可见范围内,bool)四个键
  • 备注

    • 深度(depth)为线性归一化深度,表示世界点距相机的距离按比例映射到[0,1]:近裁剪面处为0,远裁剪面处为1,数值越大离相机越远,与距离成线性关系(如0.5即表示位于近远裁剪面的正中间位置)。相机背后的点或超出远裁剪面的点,depth会落在[0,1]之外,此时isInScreen为False。
    • 屏幕坐标系以屏幕左上角为原点,单位为像素
  • 示例

python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
screenData = comp.WorldToScreenPoint(10, 60, 10)
isInScreen = screenData['isInScreen']