Unity 2D角色跳跃功能触发正常但Y轴无位移问题求助
问题根因
你代码中混用了「刚体速度赋值」和「直接修改刚体位置」两种位移逻辑,后者直接抵消了跳跃的速度效果:
你在Jump方法中为Rigidbody2D赋予了向上的Y轴速度,但FixedUpdate中调用rigidbody2d.MovePosition时,使用默认值为0的vertical变量计算Y轴位移,每帧物理更新都会把Y轴位置强行重置为无位移状态,完全覆盖了跳跃速度带来的Y轴偏移。
可直接生效的修复方案
修改FixedUpdate方法,仅用MovePosition处理水平轴位移,Y轴位移完全交给刚体的速度(跳跃、重力)系统处理,修改后的代码如下:
void FixedUpdate() { Vector2 position = rigidbody2d.position; // 仅计算水平轴位移,Y轴由刚体自动处理 position.x = position.x + speed * horizontal * Time.deltaTime; rigidbody2d.MovePosition(position); }
额外检查项
如果修改后仍无法跳跃,按顺序检查以下配置:
- 确认Inspector面板中
KittenController组件的jumpForce参数已赋值,测试阶段可先填5~10 - 确认角色挂载的
Rigidbody2D组件的Body Type属性设置为Dynamic - 确认
Rigidbody2D组件的Gravity Scale属性不为0,默认填1即可 - 确认角色碰撞体和地面碰撞体没有勾选
Is Trigger,否则不会触发物理碰撞
内容的提问来源于stack exchange,提问作者Evelyn
相关产品推荐
相关产品推荐

