Godot 2D Gameplay 是面向 Godot 4.x 的 2D 玩法实现与调试技能,重点处理角色移动、物理交互、瓦片地图、动画、碰撞与战斗判定等即时玩法环节。它要求先读取项目证据(最近的 project.godot、config/features、主场景、输入映射、2D 物理层、物理帧率、重力与纹理过滤设置),再搜索现有 .gd、.tscn、.tres 中的玩家节点、瓦片地图、动画节点、伤害接口、组与自动加载,并保持既有节点命名、类型化脚本风格、信号命名与碰撞约定;不存在的项目文件需先询问目标 Godot 4.x 次版本与最小场景约定。物理归属选择上,CharacterBody2D 用于代码驱动、需要沿世界碰撞滑动的角色(平台跳跃用着地运动,俯视角用悬浮运动),RigidBody2D 用于物理模拟对象(离散撞击用冲量,持续加速用施加力,不逐帧改写变换),AnimatableBody2D 用于脚本控制的移动平台与危险物,Area2D 用于仅重叠检测的传感器、拾取物、受击盒与简单投射物。移动与查询应放在 _physics_process(),表现更新放在 _process(),除非必须与物理结果完全一致。实现流程为:用可测量指标定义行为(速度、加速度、停止距离、跳跃高度或滞空时间、攻击节奏、无敌时间、预期碰撞对象);先创建语义化 Input Map 动作,不在角色逻辑中硬编码按键;先用基本碰撞形状搭灰盒物理场景;实现单一移动模式,速度以像素/秒计,move_and_slide() 内部应用物理步长;按职责分层构建地面、承载碰撞的地形、装饰、前景与导航;由玩法状态驱动动画,避免动画轨道覆盖权威物理变换;战斗以显式交互实现攻击、受击盒、生命、队伍、冷却与死亡的独立契约,用信号反馈;最后叠加可读的游戏手感效果。示例给出带加速度、跳跃缓冲、土狼时间和短跳释放的类型化平台跳跃控制器代码,并提醒不要在 move_and_slide() 前把速度乘 delta。设计规则包括按可玩性而非精灵透明度设置碰撞、把碰撞层当接口、仅在语义状态变化时切换动画、在权威接收方只结算一次伤害、用计时器或累计游戏 delta 处理冷却、仅在性能剖析或规模需要时使用对象池。验证环节要求运行既有测试命令与无头解析/导入检查、确认输入动作存在、开启可见碰撞形状检查瓦片碰撞与掩码、在配置物理帧率及窗口/相机缩放变化后验证移动、检查伤害钳制与单次死亡与友军忽略与无敌不会永久化、观察对象池数量稳定。还列出常见故障模式,如斜向移动更快、速度随帧率变化、floor 状态恒假、瓦片碰撞偏移、动画闪烁、攻击重复命中、快速子弹穿透、镜头抖动残留偏移等,并给出对应排查方向。
godot-2d-gameplay
编程与开发
更新于 10-19 16:14