Input.GetKeyDown 命令在 Unity2D 中无法正常工作

Input.GetKeyDown command doesn't work properly in Unity2D

我对编程和游戏开发还很陌生,所以请耐心等待。我一直在尝试制作一个脚本,根据玩家在 Unity2D 中面向的方向向左或向右添加力。

我会让脚本根据他最后按下的按钮 (A/D) 检测他面向的方向。为此,我制作了两个布尔值(IsFacingRightIsFacingLeft),如果玩家按下“A”或“D”,它们会相应地改变。

IsFacingRight 默认情况下开始为 true,Left 开始为 false。如果我按下“S”按钮,力就会以正确的方向施加。我的问题是当我按下“S”按钮时没有任何反应。我决定将两个布尔值都设为 public 以随时查看它们的状态,我注意到当我按下“S”按钮时,两个布尔值都变为真。我的猜测是力是左右施加的,因此力相互抵消。这是代码:

{
    public bool IsFacingR = true;
    public bool IsFacingL = false;
    public Rigidbody2D RB;
    private float thrust = 20f;
    void Update()

    {
        if (Input.GetKeyDown(KeyCode.D))
        {
            Debug.Log("Im R");
            IsFacingR = true;
            IsFacingL = false;
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("Im L");
            IsFacingR = false;
            IsFacingL = true;
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            Slider();
        }
    }

    

    void Slider()
    {

        if (IsFacingR = true) 
        {
            RB.AddForce(Vector2.right * thrust);
        }
        if (IsFacingL = true) 
        {
            RB.AddForce(-Vector2.right * thrust);
        }
    }
}

您有错字:

if (IsFacingR = true) 
    {
        RB.AddForce(Vector2.right * thrust);
    }
if (IsFacingL = true) 
    {
        RB.AddForce(-Vector2.right * thrust);
    }

你不是在“询问”IsfacingR 是否为真你是将 IsFacingR 设置为真,我什至不知道它是如何编译的(可能因为它是布尔值)

c# 的 = 不是比较器,它设置了一个用于比较 2 个事物的变量,请使用 ==

我希望这能解决您的问题,但除此之外请不要每天问同样的问题。问候。