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

Unity3D无限跳跃问题:按住空格角色持续上浮故障排查求助

问题根源
  • 你将on_floor固定设为true后,FixedUpdate中只要按住空格键就会每帧执行Direction.y += jump_force*2的逻辑,且执行后再次将on_floor赋值为true,没有任何将其改为false的逻辑,导致向上的速度持续累加,角色就会一直向上漂浮。
  • 代码中未将地面检测的结果同步到on_floor变量,on_floor的状态完全不会根据角色是否落地更新。
  • 跳跃逻辑重复冲突:你既手动修改Direction.y控制跳跃,又通过RigidbodyComponent.AddForce施加跳跃力,最后还直接覆盖刚体速度,两边逻辑冲突。
  • 用Input.GetKey(KeyCode.Space)检测长按触发跳跃,而非检测单次按键按下的Input.GetKeyDown,导致长按会重复触发跳跃逻辑。
修复步骤
  1. 首先删除FixedUpdate中手动给Direction.y加跳跃力的冗余逻辑,保留你已经写好的带超级跳的跳跃逻辑即可。
  2. 将地面检测的结果同步给on_floor变量,角色离开地面时自动把on_floor设为false。
  3. 跳跃触发只响应Input.GetKeyDown的单次按下事件,跳完立刻重置跳跃状态,避免重复触发。
核心修复后代码片段
// 变量初始值设为false,进入游戏后由地面检测更新状态
private bool on_floor = false;

void Update()
{
    // 只检测单次按下空格,且在地面时才标记跳跃触发
    if(Input.GetKeyDown(KeyCode.Space) && on_floor){
        jumpKeyWasPressed = true;
    }
    horizontalInput = Input.GetAxis("Horizontal");
    if(Input.GetKeyDown(KeyCode.LeftShift)){
        shiftKeyWasPressed = true;
    }
}

void FixedUpdate(){
    Direction.y -= gravity;
    Direction.x = horizontalInput * 2; // 直接用Horizontal输入代替单独检测A/D,简化逻辑

    // 处理冲刺逻辑
    if(shiftKeyWasPressed && Input.GetKey(KeyCode.LeftShift)){
        Direction.x *= 6;
    }else{
        shiftKeyWasPressed = false;
    }

    // 同步地面状态到on_floor变量
    on_floor = Physics.OverlapSphere(groundCheckTransform.position, 0.1f, playerMask).Length > 0;
    // 在地面时重置y轴向下速度,避免下落速度累加
    if(on_floor && Direction.y < 0){
        Direction.y = 0;
    }

    // 触发跳跃
    if (jumpKeyWasPressed && on_floor)
    {
        float jumpPower = 7;
        if (superJumpsRemaing > 0){
            jumpPower *=2;
            superJumpsRemaing--;
        }
        Direction.y += jumpPower; // 直接加到你自己维护的Direction里,避免逻辑冲突
        jumpKeyWasPressed = false;
    }
    // 最后统一设置刚体速度
    RigidbodyComponent.velocity = Direction;
}
注意事项
  • 不要同时使用手动修改刚体速度和AddForce两种方式控制运动,二者逻辑容易冲突,统一用一种即可。
  • 地面检测的层级playerMask要确认排除角色自身的碰撞体,否则检测会一直返回true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:05