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

C#检测按键点击次数/长按时长及解决Unity跳跃重复触发问题

解决Unity空中重复跳跃问题

问题根源

  • 你用Input.GetKey("space")会在按住空格时持续触发跳跃逻辑,加上固定高度判断的局限性,物体下落过程中y值会低于-2.4,导致重新允许跳跃,引发空中连跳。
  • 固定高度判断本身不可靠,物体的位置会随物理运动不断变化,无法精准判断是否处于可跳跃的地面状态。

方案1:改用按键按下瞬间触发(单跳,推荐)

用Input.GetKeyDown替代Input.GetKey,只在按键按下的第一帧触发跳跃,同时改用地面碰撞检测替代固定高度判断,逻辑更准确:

private Rigidbody2D rb;
private bool isGrounded;

void Awake()
{
    rb = GetComponent<Rigidbody2D>();
}

// 接触地面时标记可跳跃
void OnCollisionStay2D(Collision2D other)
{
    if (other.gameObject.CompareTag("Ground"))
    {
        isGrounded = true;
    }
}

// 离开地面时取消标记
void OnCollisionExit2D(Collision2D other)
{
    if (other.gameObject.CompareTag("Ground"))
    {
        isGrounded = false;
    }
}

void Update()
{
    // 仅在地面且按下空格瞬间触发跳跃
    if (isGrounded && Input.GetKeyDown(KeyCode.Space))
    {
        // 用AddForce符合物理引擎逻辑,比Translate更自然
        rb.AddForce(Vector2.up * 300f);
        // 手动标记为非地面,避免跳跃过程中误判
        isGrounded = false;
    }
}

方案2:控制跳跃次数(支持多段跳)

如果需要多段跳功能,可以用计数器限制最大跳跃次数:

private Rigidbody2D rb;
private int jumpCount;
public int maxJumpCount = 2; // 可在Inspector面板调整最大跳跃次数

void Awake()
{
    rb = GetComponent<Rigidbody2D>();
}

// 回到地面时重置跳跃次数
void OnCollisionEnter2D(Collision2D other)
{
    if (other.gameObject.CompareTag("Ground"))
    {
        jumpCount = 0;
    }
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space) && jumpCount < maxJumpCount)
    {
        rb.AddForce(Vector2.up * 300f);
        jumpCount++;
    }
}

方案3:保留原高度判断的改进

如果一定要用固定高度逻辑,结合GetKeyDown和跳跃状态锁:

private Rigidbody2D rb;
private bool hasJumped;

void Awake()
{
    rb = GetComponent<Rigidbody2D>();
}

void Update()
{
    // 回到允许跳跃的高度时重置状态
    if (rb.position.y <= -2.4f)
    {
        hasJumped = false;
    }

    // 仅在允许高度且未跳跃过的情况下,按下空格触发一次跳跃
    if (!hasJumped && rb.position.y <= -2.4f && Input.GetKeyDown(KeyCode.Space))
    {
        rb.Translate(Vector3.up * 10 * Time.deltaTime);
        hasJumped = true;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:24:26