如何在 Unity 中前进和/或后退?

Posted

技术标签:

【中文标题】如何在 Unity 中前进和/或后退?【英文标题】:How do I move forwards and/or backwards in Unity? 【发布时间】:2020-11-11 06:36:27 【问题描述】:

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

这是我的代码:

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);
        
        
    



任何建议都会很有帮助。

【问题讨论】:

【参考方案1】:

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

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

另外,在固定更新中施加力量对你有好处,但请记住在固定更新时使用Time.fixedDeltaTime,因为常规 deltatime 在这里可能没有正确的值

如果这没有帮助,在fixedUpdate 期间捕获输入可能会出现一些问题,我认为最好的形式是在update 中捕获输入,并设置一些将在fixedUpdate 中读取的标志应用你的物理学。

【讨论】:

@GeckoGeek 如果有帮助,请考虑接受答案。 See here for more information

以上是关于如何在 Unity 中前进和/或后退?的主要内容,如果未能解决你的问题,请参考以下文章

如何用jQuery禁用浏览器的前进后退按钮

用iframe后 点后退按钮时总是在潜套框里后退,如何让整个父页面整体后退呢?

如何让鼠标按钮 4 / 5(浏览器后退/浏览器前进)在 Firefox 中工作?

连续按下按钮时如何加快前进/后退过程

如何在 WPF WebBrowser 中使用“后退”和“前进”导航按钮事件?

如何使用UItextfield在xamarin IOS中只进行前进和后退文本框?