SuperAPI AI 工具集

godot-characterbody-2d

编程与开发

查看项目

更新于 10-15 18:29

技能介绍

用途

该技能提供 Godot 引擎中 CharacterBody2D 的专家级实现模式,重点在于角色移动手感系统,而非入门级的 move_and_slide 教程。适用于玩家角色、NPC 或敌人的移动控制。

主要能力

  • 平台跳跃移动:土狼时间(coyote time)、跳跃缓冲(jump buffering)、可变跳跃高度。
  • 俯视移动:八方向移动、坦克式操控。
  • 碰撞处理、单向平台、状态机。
  • 提供多个脚本模块,按任务选择:平台跳跃基础(expert_physics_2d.gd)、土狼/缓冲隔离(frame_perfect_coyote_time.gd)、可变跳跃(variable_jump_height.gd)、斜坡与楼梯(slope_stair_snapping.gd)、墙滑与墙跳(wall_slide_jump_refined.gd 或 wall_jump_controller.gd)、冲刺与无敌帧(dash_state_controller.gd 或 dash_controller.gd)、空中控制(aerial_drift_acceleration.gd)、天花板碰撞(ceiling_bonk_detection.gd)、击退与风推力(impulse_response_handler.gd)、像素画视觉(subpixel_movement_rounding.gd)、大量 AI 角色(performance_character_pooling.gd)、跳跃弧线调试(game_feel_profiler.gd)、动画根运动(root_motion_controller.gd)。

使用方式

建议先阅读 expert_physics_2d.gd,再按需添加冲刺、墙跳等脚本。单向平台的正确做法:在平台碰撞体上设置单向(CollisionShape2D 单向或 TileSet 物理单向),而非传送玩家;使用明确的碰撞层/遮罩,使下穿时可临时清除平台位;下穿保持在物理帧内,不要用 position 微调绕过 move_and_slide。

适用场景

平台跳跃游戏、俯视游戏、类银河恶魔城、战斗系统中的击退与受击硬直、需要大量 AI 角色的场景。

限制与禁止事项

  • 不要用 RigidBody2D 做标准玩家控制器。
  • 不要在 move_and_slide() 前将 velocity 乘以 delta。
  • 不要用 global_position 更新做游戏移动。
  • 不要通过微调 position.y 实现单向平台下穿。
  • 不要忽略 move_and_slide() 后的地板/墙/天花板状态。
  • 不要依赖默认 floor_snap_length 做快速爬楼梯。
  • 不要在地板上时施加重力。
  • 不要用 Area2D 作为主要地面检测。
  • 不要忘记天花板碰撞。
  • 不要为像素画取整物理位置。
  • 不要对大量角色频繁使用 queue_free()。

参考

官方文档链接包括 Using CharacterBody2D、CharacterBody2D 类、物理介绍、2D 碰撞形状、2D 移动、2D 运动学角色、物理问题排查、射线投射、KinematicCollision2D、物理插值、InputEvent。相关技能包括 godot-project-foundations、godot-gdscript-mastery、godot-2d-physics、godot-input-handling、godot-raycasting-queries、godot-tilemap-mastery、godot-2d-animation、godot-state-machine-advanced、godot-camera-systems、godot-signal-architecture、godot-genre-platformer、godot-genre-metroidvania、godot-combat-system、godot-monte-carlo-balancer、godot-master。