Camera2 运行时镜头命令
Camera2 运行时镜头命令用于给玩家播放临时镜头效果。它适合技能反馈、武器后坐力、冲刺镜头、落地冲击、Boss 注视、任务引导和过场动画中的短镜头节奏。
这项能力主要由客户端 GermMod 执行。服务端不需要新增专门 API,只要能给玩家下发 DOS,就可以使用 camera<->immersive@... 命令。
开启 Camera2
Camera2 命令依赖沉浸式第三人称镜头:
updateClient<->engineConfig@enableImmersiveThirdPersonCamera@true
服务端可以通过已有 API 下发:
GermPacketAPI.sendHudDos(player,
"updateClient<->engineConfig@enableImmersiveThirdPersonCamera@true");
命令类型
Camera2 常用命令有三类:
| 命令 | 用途 |
|---|---|
play | 播放一次性镜头效果,例如震屏、后坐力、冲刺、落地 |
patch | 持续修改镜头构图,例如拉远、偏肩、聚焦目标 |
clear | 按频道清除镜头效果,可带淡出时间 |
每条命令都建议写 channel。同一个 channel 的新命令会覆盖旧命令,便于管理镜头状态。
播放预设镜头
常用预设:
| preset | 适合场景 |
|---|---|
shake | 爆炸、重击、地面震动 |
recoil | 枪械、弓弩、技能后坐 |
dash | 突进、位移、冲刺 |
land | 落地、砸地、重踏 |
impulse | 自定义脉冲镜头 |
示例:
camera<->immersive@play@effect.explosion@preset=shake@duration=650@in=20@out=260@amp=1.0@freq=15
camera<->immersive@play@weapon.recoil@preset=recoil@duration=220@out=180@motionPitch=-1.2@motionFov=1.4
camera<->immersive@play@skill.dash@preset=dash@duration=360@curve=cubic@motionZ=-0.32@motionFov=1.85
camera<->immersive@play@effect.land@preset=land@duration=260@out=140@motionY=-0.07@motionPitch=0.52
预设快捷命令
如果只是想快速试效果,可以直接使用 camera<->immersive@preset@名称。这类命令由 GermMod 客户端执行;服务器、GUI、脚本或插件只要能给玩家发送 DOS,就可以触发。
camera<->immersive@preset@recoil
camera<->immersive@preset@shake
camera<->immersive@preset@dash
camera<->immersive@preset@land
camera<->immersive@preset@focus
camera<->immersive@preset@focusOff
camera<->immersive@preset@shoulder
camera<->immersive@preset@clear
| 快捷命令 | 效果 |
|---|---|
recoil | 播放短促后坐力,适合枪械、弓弩、技能释放 |
shake | 播放震屏,适合爆炸、重击、Boss 技能 |
dash | 播放冲刺拉镜,适合突进、位移、闪避 |
land / landing | 播放落地冲击,适合砸地、重踏、跳劈收招 |
focus | 开启持续聚焦构图,让镜头柔和跟随玩家当前视角目标 |
focusOff / unfocus / clearFocus | 关闭 focus 聚焦效果 |
shoulder | 临时切到右肩构图,然后自动回到居中构图 |
all | 按顺序播放 recoil、dash、land、shake,适合快速检查镜头反馈 |
clear | 清理 preset.*、test.*、effect.*、server.skill.* 频道 |
常见用法:
# 技能命 中时快速给玩家一个后坐反馈
camera<->immersive@preset@recoil
# Boss 凝视阶段开启聚焦,阶段结束后关闭
camera<->immersive@preset@focus
camera<->immersive@preset@focusOff
# 调试完镜头后清理测试频道
camera<->immersive@preset@clear
快捷命令适合快速验证和常见效果。需要控制时长、强度、频道、目标实体或多段叠加时,继续使用下面的 play、patch、clear 或 batch 命令。
常用参数:
| 参数 | 说明 |
|---|---|
duration | 持续时间,单位毫秒 |
in / out | 进入和退出混合时间,单位毫秒 |
curve | 混合曲线,例如 smoothstep、cubic |
amp / amplitude | 预设强度 |
freq / frequency | shake 频率 |
motionX/Y/Z | 额外镜头位移 |
motionPitch/Yaw/Roll/Fov | 额外镜头旋转或 FOV |
持续修改镜头构图
patch 用于持续影响镜头构图。常见用途是切换偏肩、拉远镜头、进入战斗聚焦构图。
camera<->immersive@patch@combat.focus@duration=-1@in=140@out=220@profile=focus@distance=4.4@fov=-3
camera<->immersive@patch@combat.shoulder@duration=-1@shoulderSide=right
camera<->immersive@patch@combat.center@duration=500@shoulderSide=center
duration=-1 表示持续生效。持续命令一定要使用稳定的 channel,并在不需要时清除:
camera<->immersive@clear@combat.focus@out=220
聚焦实体或坐 标
subject 可以让镜头柔和看向某个实体或世界坐标。它只添加有限的视觉 yaw / pitch 偏移,不会强制旋转玩家本体。
聚焦实体:
camera<->immersive@patch@boss.focus@duration=-1@profile=focus@subject=entity@entityId=128@focusYaw=0.35@focusPitch=0.22@deadYaw=2.0@deadPitch=1.2@maxYaw=9@maxPitch=5
聚焦世界坐标:
camera<->immersive@patch@marker.focus@duration=1200@subject=world@targetX=10.5@targetY=72@targetZ=-31.5@focusYaw=0.45@maxYaw=12
清除聚焦:
camera<->immersive@clear@boss.focus@out=220
常用聚焦参数:
| 参数 | 说明 |
|---|---|
subject / target / focus | entity、world、self |
entityId / targetId | 目标实体 ID |
targetX/Y/Z | 世界坐标目标 |
focusYaw / focusPitch | yaw / pitch 跟随强度 |
deadYaw / deadPitch | 小角度死区 |
maxYaw / maxPitch | 最大视觉修正角度 |
清除频道
clear 支持精确频道和简单通配:
camera<->immersive@clear@weapon.recoil@out=180
camera<->immersive@clear@skill.dash.*@out=180
camera<->immersive@clear@*@out=220
| 写法 | 说明 |
|---|---|
weapon.recoil | 只清除这个频道 |
skill.dash.* | 清除这个前缀下的所有频道 |
* | 清除所有 Camera2 运行时命令 |
批量命令
需要同时播放多段镜头时,可以使用 json 或 batch。例如技能突进时同时修改构图并播放冲刺镜头:
camera<->immersive@batch@[{"action":"patch","channel":"skill.dash.profile","durationMs":360,"blend":{"inMs":40,"outMs":160},"rig":{"distance":6.0,"fov":3.0,"shoulderSide":"right"}},{"action":"play","channel":"skill.dash.motion","merge":"additive","durationMs":260,"motion":{"preset":"dash","offsetZ":-0.25,"fov":1.6}}]
也可以使用对象包裹:
{
"commands": [
{"action": "patch", "channel": "server.combat", "profile": "focus", "durationMs": -1},
{"action": "play", "channel": "effect.hit", "merge": "additive", "motion": {"preset": "recoil", "pitch": -1.2}}
]
}
使用建议
- 对一次性效果使用
play,对持续构图使用patch。 - 持续效果使用
duration=-1时,一定要规划好clear。 - 频道名建议使用模块化命名,例如
boss.focus、skill.dash.motion、weapon.recoil。 - 频繁播放镜头时复用同一频道,不要每次生成随机频道。
- Camera2 命令只改变客户端镜头表现,不改变玩家真实位置、朝向和服务端判定。
- 客户端会过滤非法数字、极端时长和过大的 motion / subject 参数,避免错误命令破坏当前镜头。