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

Unity 2D跳跃逻辑问题:落地未使用跳跃时掉落平台仍可跳跃

问题原因

用户提供的原代码截图:
enter image description here

  • 你的代码中isGrounded状态仅在两个节点修改:主动触发跳跃时赋值为false、与地面碰撞触发OnCollisionEnter2D时赋值为true
  • 当角色从平台边缘滑落、平台销毁掉落等非主动跳跃的离地场景下,没有逻辑修改isGrounded的状态,它会一直保持为true,因此空中仍然可以触发跳跃,就出现了你说的跳跃次数堆叠的问题。
修复方案

方案1:补充碰撞退出逻辑(快速修复)

补充OnCollisionExit2D方法,当角色离开地面碰撞体时立刻将isGrounded设为false,修改后完整代码如下:

[...]
    // jump
    float verticleMove = joyStick.Vertical;
    if (verticleMove >= .1f && isGrounded)
    {
        body.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
        FindObjectOfType<AudioManager>().Play("Jump");
        isGrounded = false;
    }
}

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.CompareTag("Enemy"))
    {
        TakeDamage(50);
    }
    if (collision.collider.CompareTag("Ground"))
    {
        isGrounded = true;
    }
}

// 新增碰撞退出逻辑
void OnCollisionExit2D(Collision2D collision)
{
    if (collision.collider.CompareTag("Ground"))
    {
        isGrounded = false;
    }
}

注意:如果存在角色同时接触多个地面碰撞体的场景,这个方案可能会出现提前把isGrounded设为false的问题,建议用更稳定的方案2

方案2:脚下区域检测(更稳定,推荐)

不用完全依赖碰撞事件,直接在每帧检测角色脚下指定范围内是否存在地面碰撞体,避免碰撞抖动、多地面接触的异常:

// 可以在Inspector面板调整的参数
public float groundCheckRadius = 0.2f;
public Transform groundCheckPoint; // 拖入角色脚底的空物体作为检测点
public LayerMask groundLayer; // 选择地面所在的层

[...]
    // jump
    // 每帧先检测是否接地
    isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, groundLayer);
    
    float verticleMove = joyStick.Vertical;
    if (verticleMove >= .1f && isGrounded)
    {
        body.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
        FindObjectOfType<AudioManager>().Play("Jump");
    }
}

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.CompareTag("Enemy"))
    {
        TakeDamage(50);
    }
}

这个方案不用再维护碰撞进入退出的isGrounded赋值,完全由实时检测判断,只要角色离开地面,isGrounded就会立刻变为false,不会出现空中可跳的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:27:05