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

Unity角色空中异常跳跃问题求助(附代码)

问题排查与解决方案

你的角色出现空中持续跳跃异常的核心原因是**Jump()方法未添加地面状态校验**,导致无论角色是否在空中,只要触发跳跃指令就会重置垂直速度,进而实现空中连跳。

具体问题点

当前Jump()方法直接修改垂直速度,完全没有限制触发条件:

public void Jump()
{
    playerVelocity.y = Mathf.Sqrt(jumpHeight * -3.0f * gravity);
}

即便你在Update()中更新了isGrounded状态,但跳跃逻辑本身未做校验,只要外部输入(比如按键检测)触发Jump(),就会执行跳跃操作。

修复方案

给Jump()方法添加地面状态判断,仅允许角色在落地时触发跳跃:

public void Jump()
{
    // 只有在地面且垂直速度≤0时触发跳跃(确保角色完全落地,避免斜坡/边缘误判)
    if(isGrounded && playerVelocity.y <= 0)
    {
        playerVelocity.y = Mathf.Sqrt(jumpHeight * -3.0f * gravity);
    }
}

额外验证建议

  • 检查外部调用Jump()的输入逻辑:使用Input.GetKeyDown()替代Input.GetKey(),确保单次按键仅触发一次跳跃
  • 调整CharacterController组件的Skin Width参数(建议设为0.01-0.05),避免isGrounded检测出现延迟或误判

内容的提问来源于stack exchange,提问作者Gobster07

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:16