【问题标题】:Player Movement in Unity 3DUnity 3D 中的玩家移动
【发布时间】:2020-06-13 08:26:54
【问题描述】:

所以我是 Unity 的新手,我正在关注一个名为 Brackeys 的 YouTuber,但是当我执行他的角色移动代码时,我的角色不会前进或后退,它会左右移动,但速度非常快。 我是这方面的新手,所以我对此了解不多。 这是代码:

using UnityEngine;

公共类 PlayerMovement : MonoBehaviour {

public Rigidbody rb;

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

void FixedUpdate()
{

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

    if (Input.GetKey("d"))  
    {

        rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

    if (Input.GetKey("a"))  
    {

        rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

    if (rb.position.y < -1f)
    {
        FindObjectOfType<GameManager>().EndGame();
    }
}

}

【问题讨论】:

  • 如果您希望使用 w 或 s 键前进和后退,则无需处理这些键。
  • 那么我们如何前进和后退??

标签: c# visual-studio unity3d game-engine game-physics


【解决方案1】:

我认为您在这里缺少的是沿 z 轴的移动。


    if (Input.GetKey("w"))  
    {

        rb.AddForce(0, 0, forwardForce * Time.deltaTime, ForceMode.VelocityChange);
    }

    if (Input.GetKey("s"))  
    {

        rb.AddForce(0, 0, -forwardForce * Time.deltaTime, ForceMode.VelocityChange);
    }

【讨论】:

  • 嘿,谢谢,它确实有效,我之前尝试过,但我认为我的代码有一些问题,但你的代码工作起来就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多