Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/玩家/摄像机.md
2025-06-27 23:59:47 +08:00

1305 lines
33 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
---
# 摄像机
## AddCameraAroundEntityMotion
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
给相机添加对实体环绕运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| eID | str | 要环绕的某个实体的ID |
| angularVelocity | float | 圆周运动的角速度(弧度/秒) |
| axis | tuple(float,float,float) | 圆周运动的轴,决定了在哪个平面上做圆周运动,默认为(0, 1, 0) |
| lockDir | bool | 是否在运动器生效时锁定相机的朝向不锁定则相机的朝向会随着运动而改变默认为False。 |
| stopRad | float | 停止该运动器所需要的弧度当stopRad为0时该运动器会一直运行默认为0 |
| radius | float | 环绕半径,当设置为-1时环绕运动器使用当前与目标的距离作为半径当设置为非负数时表示按设定的值作为环绕半径默认为-1 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int | 运动器ID添加失败时返回-1 |
- 备注
- 环绕运动器可叠加多个,且可与速度运动器互相叠加。当有多个运动器叠加时,位置为各个运动器计算出的瞬时向量之和,朝向以后添加的运动器设置的朝向为准。
- 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用[SetCanDrag](../控制.md#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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
给相机添加对点环绕运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| center | tuple(float,float,float) | 要环绕的圆心点坐标 |
| angularVelocity | float | 圆周运动的角速度(弧度/秒) |
| axis | tuple(float,float,float) | 圆周运动的轴,决定了在哪个平面上做圆周运动,默认为(0, 1, 0) |
| lockDir | bool | 是否在运动器生效时锁定相机的朝向不锁定则相机的朝向会随着运动而改变默认为False。 |
| stopRad | float | 停止该运动器所需要的弧度当stopRad为0时该运动器会一直运行默认为0 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int | 运动器ID添加失败时返回-1 |
- 备注
- 环绕运动器可叠加多个,且可与速度运动器互相叠加。当有多个运动器叠加时,位置为各个运动器计算出的瞬时向量之和,朝向以后添加的运动器设置的朝向为准。
- 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用[SetCanDrag](../控制.md#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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
给相机添加轨迹运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| targetPos | tuple(float,float,float) | 轨迹终点 |
| duraTime | float | 到达终点所需要的时间 |
| startPos | tuple(float,float,float) | 轨迹起点默认为None表示以调用[StartCameraMotion](#StartCameraMotion)的位置作为起点。 |
| relativeCoord | bool | 是否使用相对坐标设置起点和终点默认为False。 |
| isLoop | bool | 是否循环若设为True则相机会在起点和终点之间往复运动默认为False。 |
| targetRot | tuple(float,float,float) | 相机到达targetPos时的朝向受参数relativeCoord影响默认为None表示使用调用[StartCameraMotion](#StartCameraMotion)时的朝向。 |
| startRot | tuple(float,float,float) | 相机到达startPos时的朝向受参数relativeCoord影响默认为None表示使用调用[StartCameraMotion](#StartCameraMotion)时的朝向。 |
| useVelocityDir | bool | 是否使用运动中的速度方向作为朝向默认为False若为True则参数targetRot和startRot无效 |
| ease | TimeEaseType | 时间变化函数, 默认值为clientApi.GetMinecraftEnum().TimeEaseType.linear, 参数不在枚举值中也当作linear |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int | 运动器ID添加失败时返回-1 |
- 备注
- 轨迹运动器不可叠加,仅能添加一个。相机会在运动器停止后自动回到原始状态。
- 运动器的相对坐标设置(relativeCoord)是根据[启动](#StartCameraMotion)运动器时的相机位置计算所得,并不是在添加运动器时计算。
使用相对坐标时,是以相机自身的局部坐标系(右手坐标系)为参考。
引擎中的相机镜头默认朝向自身局部坐标系的-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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
给相机添加速度运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| velocity | tuple(float,float,float) | 速度,包含大小、方向 |
| accelerate | tuple(float,float,float) | 加速度包含大小、方向默认为None表示没有加速度 |
| useVelocityDir | bool | 是否使用当前速度的方向作为此刻相机的朝向默认为True |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int | 运动器ID添加失败时返回-1 |
- 备注
- 速度运动器可叠加多个,且可与环绕运动器互相叠加。当有多个运动器叠加时,相机的朝向以后添加的运动器设置的朝向为准。
- 运动器的朝向也会受到玩家视角转动的影响,若要完全使用运动器的朝向,建议使用[SetCanDrag](../控制.md#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
<span style="display:inline;color:#7575f9">客户端</span>
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))
```
## GetCameraAnchor
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取相机锚点
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 锚点偏移量 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraAnchor()
```
## GetCameraMotions
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取相机上的所有运动器
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| dict | 运动器集合key值代表运动器mIDvalue值代表运动器类型0轨迹运动器、1速度运动器、2环绕运动器 |
- 备注
- 运动器非人为停止后会被移除。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
motions = comp.GetCameraMotions()
# motions = {
# 0:1,
# 1:2
# }
```
## GetCameraOffset
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取摄像机偏移量
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 偏移量 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraOffset()
```
## GetCameraPitchLimit
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取摄像机上下角度限制值
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float) | 上下角度限制值 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraPitchLimit()
```
## GetCameraRotation
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取摄像机的朝向
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 朝向分别代表Pitch俯仰角Yaw偏航角Roll翻滚角的角度 |
- 备注
- 若在使用[SetCameraRotation](#SetCameraRotation)立马调用该接口,会得到修改前的结果,因为摄像机是在逻辑帧之间插值移动变化的,而不是马上改变。
- 与F3显示的相机调试信息的Pitch、Yaw相反。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
rot = comp.GetCameraRotation()
```
## GetForward
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
返回相机向前的方向
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 向前的方向 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetForward()
```
## GetFov
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取视野大小
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| float | 即视频设置中的视野,单位为角度 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
fov = comp.GetFov()
```
## GetFpHeight
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
获取本地玩家当前状态下,第一人称视角时的摄像机高度偏移量。游泳时,滑翔时以及普通状态下会有所不同
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| float | 高度偏移量 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
heightOffset = comp.GetFpHeight()
```
## GetPerspective
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.playerViewCompClient.PlayerViewCompClient
- 描述
获取当前的视角模式
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int | 0第一人称视角1第三人称视角2前视第三人称视角 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
persp = comp.GetPerspective()
```
## GetPosition
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
返回相机中心
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 相机中心位置 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetPosition()
```
## IsModCameraLockPitch
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
是否锁定摄像机上下角度
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否锁定 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockPitch()
```
## IsModCameraLockYaw
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
是否锁定摄像机左右角度
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否锁定 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockYaw()
```
## LockCamera
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
锁定摄像机
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| lockPos | tuple(float,float,float) | 世界坐标 |
| lockRot | tuple(float,float,float) | 摄像机的角度(俯仰角,偏航角,横滚角) |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
锁定摄像机上下角度(第三人称下生效,锁定后不能上下调整视角)
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| enable | int | 1:锁定 0:解锁 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraPitch(1)
```
## LockModCameraYaw
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
锁定摄像机左右角度(第三人称下生效,锁定后不能通过鼠标左右调整视角)
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| enable | int | 1:锁定 0:解锁 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraYaw(1)
```
## LockPerspective
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.playerViewCompClient.PlayerViewCompClient
- 描述
锁定玩家的视角模式
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| lock | int | 0第一人称视角1第三人称视角2前视第三人称视角 其他值:解除锁定 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否锁定成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.LockPerspective(1)
```
## RemoveCameraMotion
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
移除相机上的某个运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| motionId | int | 要移除的某个运动器的ID |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功移除 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.RemoveCameraMotion(mID)
```
## ResetCameraBindActorId
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
将摄像机重新绑定回主角身上
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.ResetCameraBindActorId()
```
## SetCameraAnchor
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置相机锚点
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| offset | tuple(float,float,float) | 锚点偏移量 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- (1) 调用了该接口会对第一人称下客户端的交互中心进行同样的偏移,如果需要修改第三人称的交互中心可使用[SetPickCenterOffset](./行为.md#setpickcenteroffset)
(2) 在第一人称调高了摄像头会导致交互被撤销,这是由于服务端的交互中心还是在人物的位置,需要使用[SetInteracteCenterOffset](./行为.md#setinteractecenteroffset)进行修正
(3) 在第一人称调高了摄像头会导致无法交互到地面或者远距离的方块,可以使用[SetPickRange](./行为.md#setpickrange)修改客户端的交互半径,使用[SetPlayerInteracteRange](./行为.md#setplayerinteracterange)修改服务端的交互半径.
- 注:当前客户端能修改交互中心的有[SetCameraAnchor](#setcameraanchor)修改第一人称,[SetPickCenterOffset](./行为.md#setpickcenteroffset)修改第三人称。服务端能使用[SetInteracteCenterOffset](./行为.md#setinteractecenteroffset)修改玩家交互中心(服务端无第几人称概念)
- 与SetCameraOffset不同的是该接口改变的是相机的轨道的圆心位置。对第一人称和第三人称模式均生效,需要注意的是改变后鼠标或者触屏旋转最终绕该圆心运动不再绕玩家为中心。可以简单理解为默认anchor为玩家中心。
- 注意,设置后的效果不会存档
- 注意,如果摄像头进入墙体里面会出现透视的情况,在联机模式时可能会破坏游戏的平衡,请谨慎使用
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraAnchor((0,1,0))
```
## SetCameraBindActorId
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
将摄像机绑定到目标实体身上调用者与目标必须在同一个dimension同时需要在加载范围之内若绑定后目标离开了范围或者死亡则会自动解除绑定
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| targetId | str | 目标实体id |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraBindActorId('1234')
```
## SetCameraDistanceFixed
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置相机弹簧臂固定,即设置当相机遇到阻挡时是否压缩与人物之间的距离
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| isFixed | bool | 是否固定相机距离 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 注意当设置为True时如果摄像头进入墙体里面会出现透视的情况在联机模式时可能会破坏游戏的平衡请谨慎使用
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraDistanceFixed(True)
```
## SetCameraOffset
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置摄像机偏移量
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| offset | tuple(float,float,float) | 偏移量 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 注意,该接口仅改变第三人称的相机(包括前视第三人称和后视第三人称)的偏移量,对第一人称模式下的相机无效。
- 与SetCameraAnchor不同的是该接口改变的是相机的位置偏移值不会对相机轨道的圆心位置进行改变。
- 注意,设置后的效果不会存档
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraOffset((1, 1, 1))
```
## SetCameraPitchLimit
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置摄像机上下角度限制值,默认是(-9090
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| limit | tuple(float,float) | 上下角度限制值 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 注意,设置后的效果不会存档
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.SetCameraPitchLimit((-30, 30))
```
## SetCameraPos
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置相机中心的位置
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| pos | tuple(float,float,float) | 位置 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 注意,设置后的效果不会存档
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraPos((1, 1, 1))
```
## SetCameraRotation
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设定摄像机的朝向
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| rot | tuple(float,float,float) | 朝向其中3个值分别代表Pitch俯仰角Yaw偏航角Roll翻滚角的角度。如果传进来的tuple长度为2则Roll翻滚角的角度默认为0。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 与F3显示的相机调试信息的Pitch、Yaw相反。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraRotation((1, 1, 1))
```
## SetFov
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
设置视野大小
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| fov | float | 单位为角度, 范围为[30, 110]若fov小于30则设置为30若fov大于110则设置为110. |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetFov(60)
```
## SetPerspective
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.playerViewCompClient.PlayerViewCompClient
- 描述
设置视角模式
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| persp | int | 0第一人称视角1第三人称视角2前视第三人称视角 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.SetPerspective(1)
```
## SetPlayerFovScale
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.playerViewCompClient.PlayerViewCompClient
- 描述
将渲染实际使用的fov变为设置中的fov乘以fovScale,fovScale越接近0其效果越接近原版望远镜效果
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| fovScale | float | 有效范围为[0,100] |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
print(comp.SetPlayerFovScale(0.5))
```
## SetSpeedFovLock
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
是否锁定相机视野fov锁定后不随速度变化而变化
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| isLocked | bool | 是否锁定 |
- 返回值
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetSpeedFovLock(True)
```
## StartCameraMotion
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
启动相机上的某个运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| motionId | int | 要启动的某个运动器的ID |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功启动 |
- 备注
- 启动运动器后相机的位置朝向变化会同步更改player的朝向若要避免修改可以使用[DepartCamera](#DepartCamera)接口。
- 相机第一人称模式下屏幕会渲染出player的手臂此时手臂位置与相机位置无关。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.StartCameraMotion(mID)
```
## StopCameraMotion
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
停止相机上的某个运动器
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| motionId | int | 要停止的某个运动器的ID |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否成功停止 |
- 备注
- 调用该接口不会触发事件[CameraMotionStopClientEvent](../../事件/玩家.md#CameraMotionStopClientEvent)。
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.StopCameraMotion(mID)
```
## UnDepartCamera
<span style="display:inline;color:#7575f9">客户端</span>
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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.cameraCompClient.CameraComponentClient
- 描述
解除摄像机锁定
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 注意,使用后会默认解除视角移动锁定,效果等同
comp.LockModCameraYaw(0) # 解除锁定左右视角
comp.LockModCameraPitch(0) # 解除锁定上下视角
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.UnLockCamera()
```