Unity 3D 中的玩家移动
Player Movement in Unity 3D
所以我是 Unity 的新手,我正在关注一个名叫 Brackeys 的 YouTuber,但是当我执行他的角色移动代码时,我的角色不会向前或向后移动,它会向左和向右移动,但速度非常快。
我是新手,所以我对此了解不多。
这是代码:
using UnityEngine;
public class 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();
}
}
}
我认为你在这里缺少的是沿 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);
}
如果不想让它超速,请更改侧向力:
> public Rigidbody rb; private float forwardForce = 2000f; // This is
> how fast the player goes forward public float sidewaysForce = 500f;
> //Change the number here to something lower.
//加上这个可以前进后退
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);
}
所以我是 Unity 的新手,我正在关注一个名叫 Brackeys 的 YouTuber,但是当我执行他的角色移动代码时,我的角色不会向前或向后移动,它会向左和向右移动,但速度非常快。 我是新手,所以我对此了解不多。 这是代码:
using UnityEngine;
public class 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();
}
}
}
我认为你在这里缺少的是沿 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);
}
如果不想让它超速,请更改侧向力:
> public Rigidbody rb; private float forwardForce = 2000f; // This is
> how fast the player goes forward public float sidewaysForce = 500f;
> //Change the number here to something lower.
//加上这个可以前进后退
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);
}