跳到主要内容

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

快捷命令适合快速验证和常见效果。需要控制时长、强度、频道、目标实体或多段叠加时,继续使用下面的 playpatchclearbatch 命令。

常用参数:

参数说明
duration持续时间,单位毫秒
in / out进入和退出混合时间,单位毫秒
curve混合曲线,例如 smoothstepcubic
amp / amplitude预设强度
freq / frequencyshake 频率
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 / focusentityworldself
entityId / targetId目标实体 ID
targetX/Y/Z世界坐标目标
focusYaw / focusPitchyaw / 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 运行时命令

批量命令

需要同时播放多段镜头时,可以使用 jsonbatch。例如技能突进时同时修改构图并播放冲刺镜头:

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.focusskill.dash.motionweapon.recoil
  • 频繁播放镜头时复用同一频道,不要每次生成随机频道。
  • Camera2 命令只改变客户端镜头表现,不改变玩家真实位置、朝向和服务端判定。
  • 客户端会过滤非法数字、极端时长和过大的 motion / subject 参数,避免错误命令破坏当前镜头。