SuperAPI AI 工具集

godot-camera-systems

编程与开发

查看项目

更新于 10-15 18:28

技能介绍

用途

该技能面向 Godot 引擎中 2D/3D 摄像机控制的实现,提供经过验证的专家模式与配套脚本,用于玩家摄像机、电影化镜头序列以及多摄像机系统。

主要能力

  • 平滑跟随:使用 lerp 或 position_smoothing 实现摄像机跟随,避免逐帧直接赋值位置导致的抖动。
  • 摄像机抖动:基于 trauma 系统的屏幕震动,支持频率参数,并提供轻量变体。
  • 平台游戏死区与拖拽:deadzone/drag 控制,配合前瞻预测(look-ahead)。
  • 摄像机过渡:Follow / Static / Cinematic 状态切换。
  • 多目标取景:计算目标 AABB 后居中并缩放适配。
  • 3D 遮挡处理:SpringArm3D 或自定义射线遮挡。
  • 其他:缩放阻尼、迷你地图 SubViewport 管理、分屏、第一人称摇摆、电影化构图等。

使用方式

技能提供一组脚本,要求在实现对应行为前先阅读。核心脚本包括:

  • camera_shake_trauma_pro.gd — 任何屏幕震动/冲击表现必读。
  • camera_shake_trauma.gd — 较轻量的 trauma 变体。
  • remote_transform_decoupling.gd — 物理体跟随的默认必读方案。
  • phantom_decoupling.gd — 另一种稳定跟随方案。
  • spring_lerp_camera_3d.gd — 自定义 3D 跟随弹簧前必读。
  • deadzone_drag_margins.gd — 平台游戏拖拽/死区。
  • camera_follow_2d.gd — 平滑 2D 跟随辅助。
  • zoom_damping_controller.gd — 非线性缩放。
  • camera_state_machine.gd — Follow / Static / Cinematic 过渡。
  • cinematic_framing_logic.gd — 三分法/引导空间。
  • minimap_viewport_manager.gd — SubViewport 更新模式。
  • split_screen_setup.gd — 本地多摄像机视口。
  • first_person_sway.gd — FPS 在 offset 上的晃动/摇摆。
  • juice_camera.gd — 组合式冲击辅助。
  • framing_box_camera_2d.gd — 多目标 AABB 取景与缩放适配。
  • occlusion_aware_camera_3d.gd — SpringArm 不足时的射线遮挡。
  • trauma_debugger.gd — 调试构建中的屏幕 trauma 衰减曲线。

多目标取景、自定义遮挡、2D/3D 跟随配方和电影化过渡需参考 camera-expert-patterns.md;当黄金路径脚本已覆盖当前装置时不要加载。

适用场景

  • 玩家摄像机(2D 平台、俯视、第三人称、第一人称)。
  • 电影化镜头序列与镜头过渡。
  • 多摄像机系统、分屏、迷你地图。
  • 需要屏幕震动/冲击反馈的游戏表现。

限制与禁止事项

  • 禁止逐帧使用 global_position = target.global_position,应使用 lerp 或 position_smoothing_enabled。
  • 禁止用 offset 做永久摄像机定位,offset 仅用于抖动、摇摆或临时后坐。
  • Camera2D 不要忘记 limit_smoothed = true。
  • 同一视口不要同时启用多个 Camera2D,只有最后启用的生效。
  • SpringArm3D 必须设置碰撞遮罩,否则会穿透地形和墙壁。
  • 不要用随机化 position(或对整个系统用 randf 作用于 offset)实现屏幕震动,应使用专用 Trauma/Noise 系统。
  • 不要默认把摄像机直接挂在高速物理体下,优先使用 RemoteTransform2D/3D 或 phantom 解耦并禁用旋转同步。
  • 3D 中不要在没有 Up 向量兜底的情况下使用 look_at()。
  • 迷你地图不要依赖 SubViewport 默认值,应设置 render_target_update_mode。
  • 缩放不要使用线性插值,优先指数 lerp 或 Tween TRANS_CUBIC。

参考

官方文档涵盖 Camera2D、Camera3D、SpringArm3D、Viewports、SubViewport、RemoteTransform2D、插值、物理插值、FastNoiseLite、PathFollow2D、鼠标与输入坐标等。相关技能包括前置(godot-project-foundations、godot-gdscript-mastery、godot-input-handling)、互补(godot-tweening、godot-characterbody-2d、godot-physics-3d、godot-raycasting-queries、godot-state-machine-advanced、godot-signal-architecture)、下游(godot-performance-optimization、godot-monte-carlo-balancer、godot-adapt-single-to-multiplayer、godot-debugging-profiling)以及 godot-master。