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

Unity 2021.3.19f1:同时按左箭头与上箭头时玩家无法跳跃

问题诊断与修复方案

这既不是Unity安装损坏,也不是Unity的bug,问题出在代码逻辑冗余+大概率的键盘硬件冲突。

代码问题分析

你写的移动判断条件if (moveHorizontal > 0.1f || moveHorizontal < 0.1f)完全多余:

  • Input.GetAxisRaw("Horizontal")只会返回-1(左移)、0(无输入)、1(右移)三个值
  • 这个条件等价于“只要值不是0.1就执行”,但它永远不会等于0.1,所以每次Update都会执行移动赋值逻辑——虽然这不会直接导致左移+跳跃失效,但混乱的逻辑容易隐藏其他问题。另外你没加地面检测,玩家可以无限跳跃,但这和当前按键冲突问题无关。

左移+跳跃失效的核心原因

最可能的两个情况:

  1. 键盘硬件按键冲突:不少低端薄膜键盘的左箭头和上箭头属于同一按键矩阵,同时按下时会出现“按键幽灵”现象,导致Unity无法同时检测到两个按键的输入;而右箭头和上箭头不在同一矩阵组,所以能正常触发。
  2. 输入帧同步问题:概率极低,但如果键盘输入延迟较高,某几帧中Input.GetAxisRaw("Horizontal")可能返回0,导致移动逻辑覆盖跳跃速度?但右移时无此问题,基本可以排除这个情况。

修复步骤

1. 优化代码(梳理清晰逻辑)

把移动判断改成更直观的if (moveHorizontal != 0),顺便加上地面检测防止无限跳跃,还调大了移动速度(原0.5f慢到几乎看不到移动效果):

using UnityEngine;

public class MyPlayerController : MonoBehaviour
{
    Rigidbody2D rb2D;
    [SerializeField] float moveSpeed = 5f;
    [SerializeField] float jumpForce = 8f;
    [SerializeField] Transform groundCheck;
    [SerializeField] LayerMask groundLayer;
    float moveHorizontal;

    void Start()
    {
        rb2D = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        moveHorizontal = Input.GetAxisRaw("Horizontal");
        
        // 只有存在左右输入时,才修改X轴速度
        if (moveHorizontal != 0)
        {
            rb2D.velocity = new Vector2(moveHorizontal * moveSpeed, rb2D.velocity.y);
        }

        // 只有在地面上时,才能触发跳跃
        if (Input.GetButtonDown("Jump") && IsGrounded())
        {
            rb2D.velocity = new Vector2(rb2D.velocity.x, jumpForce);
        }
    }

    // 检测玩家是否处于地面
    bool IsGrounded()
    {
        return Physics2D.OverlapCircle(groundCheck.position, 0.2f, groundLayer);
    }
}
  • 使用说明:在玩家对象的脚下方添加一个空物体作为groundCheck,然后在Inspector面板中将groundLayer设置为地面所在的图层。

2. 排查键盘硬件问题

  • 更换另一台键盘测试左移+跳跃操作,如果恢复正常,说明原键盘存在按键冲突。
  • 也可以在Unity的Edit > Project Settings > Input Manager中,给Jump按钮添加一个备用触发键(比如空格),测试按住左箭头+空格是否能跳跃,如果可以,也能证明是原键盘的上箭头和左箭头存在硬件冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:09:59