如何在 Unity 中向前和/或向后移动?

问题描述 投票:0回答:2

我试图让我的游戏对象向前和向后移动,但每次我按 ws 时,它根本不会移动。对于 ad,它们将使游戏对象移动。

这是我的代码:

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

    public Rigidbody rb;

    public float forwardForce = 2000f;
    public float sidewaysForce = 500f;

    void FixedUpdate()
    {   
        
        if (Input.GetKey("w")) 
        {
            rb.AddForce(0, forwardForce * Time.deltaTime, 0);
        }

        if (Input.GetKey("a"))
        {
            rb.AddForce(-sidewaysForce * Time.deltaTime, 0,  0);
        }

        if (Input.GetKey("s")) 
        {
            rb.AddForce(0, -forwardForce * Time.deltaTime, 0);
        }

        if (Input.GetKey("d")) 
        {
            rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0);
        }
        
    }

}

任何建议都会非常有帮助。

c# unity-game-engine gameobject
2个回答
2
投票

Unity 使用 left-handed 轴系统,因此向量中的第一个参数您已正确地将左/右放置为向量的 x 参数,但是对于向前和向后,您可能需要使用 z 轴(在/出)

 rb.AddForce(0, 0, forwardForce * Time.fixedDeltaTime);

另外,在固定更新中施加力量对您有好处,但请记住在固定更新时使用

Time.fixedDeltaTime
,因为常规增量时间在这里可能没有正确的值

如果这没有帮助,在

fixedUpdate
期间捕获输入可能会出现一些问题,我认为最好的形式是在
update
中捕获输入,并设置一些标志,这些标志将在
fixedUpdate
中读取,您可以在其中应用您的物理。


0
投票

确保在输入管理器中编辑所需的控件。转到编辑 --> 项目设置 --> 输入。然后,单击输入管理器。您应该能够针对您想要的任何输入编辑任何您想要的控件。下面发布了一个屏幕截图,展示了该屏幕的外观。 Screenshot of Input Manager

© www.soinside.com 2019 - 2024. All rights reserved.