You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:36:04