游戏摄像机系统
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/camera-systems-4z4j
技能介绍
要解决什么问题
摄像机是玩家观察世界的窗口。用每帧固定的 lerp(a, b, 0.1) 去跟随一个 2D 平台跳跃角色,30 FPS 和 144 FPS 下的手感完全不同;第三人称视角不做碰撞处理,摄像机会直接穿进墙体;没有死区时,手指的微小抖动会被放大成画面乱晃,长时间游玩容易引起眩晕。这类问题在引擎层面没有统一答案,Camera2D 与 Camera3D 的参数、更新顺序、坐标系都不一样,但背后的设计思路是通用的。
核心能力
这个技能覆盖的是引擎无关的摄像机决策层:
- 帧率无关的平滑跟随:用
1 - exp(-rate*dt)或SmoothDamp替代每帧固定系数的 lerp - 死区与前瞻:目标在小范围内移动时摄像机不动,超出区域后才跟随;同时朝运动或朝向方向偏移,缓入缓出避免甩头
- 边界钳制:把画面限制在关卡矩形内,注意要按视口半尺寸计算,保证画面而非中心点不出界
- 第三人称环绕:偏航/俯仰轨道 + 弹簧臂或射线碰撞回拉,俯仰角钳制在约 ±80°
- 第一人称视角与多目标构图:纯视角控制,以及一次性框住多个目标
- 震动偏移钩子:预留屏幕震动的叠加入口,触发逻辑归
game-feel负责
关键步骤
- 先定镜头服务于什么玩法:平台跳跃要前瞻以便看到危险,俯视角要居中加死区,第三人称要环绕加碰撞,第一人称只看不动。
- 跟随放在目标移动之后:在
LateUpdate或物理结算后执行,否则会有一帧延迟造成的抖动。 - 先平滑跟随,再加震动偏移:两层分开合成,否则跟随会和震动互相打架。
- 验证覆盖边界情况:低帧率与高帧率、墙角、墙体、关卡边缘各跑一遍,确认无抖动、不越界、停止自然。
适用边界
- 屏幕震动的幅度与触发时机由
game-feel负责,本技能只暴露偏移钩子 - 引擎具体的
Camera3D与环境配置交给godot-3d-essentials或对应引擎技能 - 角色移动本身交给
godot-2d-movement一类技能 - 大量摄像机或渲染目标的性能问题走
performance-optimization - 传送或重生时的硬切或快速缓动属于意图决策,不是本技能自动处理的部分
使用场景
- 制作 2D 平台跳跃游戏时,需要摄像机朝跳跃方向前瞻,让玩家提前看清前方危险与落点
- 俯视角游戏中角色小幅走位导致摄像机频繁抖动,需要设置死区让画面忽略微小移动
- 第三人称动作游戏中角色贴墙战斗,摄像机被墙体挡住,需要碰撞回拉而不是穿墙
- 游戏在 30 FPS 和 144 FPS 下摄像机手感不一致,需要改成帧率无关的平滑跟随
适合人员
- 独立游戏开发者,正在实现平台跳跃或俯视角游戏的摄像机,需要引擎无关的设计思路与避坑清单
- 游戏引擎程序员或技术美术,需要帧率无关平滑跟随、死区前瞻与边界钳制的参考实现
- 第三人称或第一人称游戏的程序员,需要环绕轨道、碰撞回拉与俯仰角钳制的轨道摄像机方案
- 修复摄像机抖动、穿墙或越界问题的游戏开发者,需要定位更新顺序与合成方式的错误