我正在尝试统一制作游戏,并且该游戏使用汽车。我想移动汽车,到目前为止,我可以向前和向后移动它,也可以向左和向右旋转它,这两个移动效果很好。
但是在我将其向右旋转之后,我尝试使其向前移动,因此它沿与以前相同的方向移动,而没有考虑到刚才的转弯。它的移动就像向前旋转一侧一样。我一直尝试使用正向向量的值,但是我的尝试均未取得良好的结果。如果有人有一些好主意,我很想听听他们的想法。
$sql = "SELECT pic, title, address FROM WP_2344432 WHERE pic != ''";
后来编辑:我问这个问题的原因是我不知道向量car.forward与我编写的静态向量不同。在评论中的解释之后,我无法理解我做错了什么。
答案 0 :(得分:1)
您可以使用rb.MovePosition()
代替transform.Translate()
。它使用Transform而不是Rigidbody来移动对象,也可以重载此方法,并选择何时要相对于空间或自身移动对象,更多here。这是工作版本
public Rigidbody rb;
public Transform car;
public float speed = 17;
Vector3 rotationRight = new Vector3(0, 30, 0);
Vector3 rotationLeft = new Vector3(0, -30, 0);
Vector3 forward = new Vector3(0, 0, 1);
Vector3 backward = new Vector3(0, 0, -1);
void FixedUpdate()
{
if (Input.GetKey("w"))
{
transform.Translate(forward * speed * Time.deltaTime);
}
if (Input.GetKey("s"))
{
transform.Translate(backward * speed * Time.deltaTime);
}
if (Input.GetKey("d"))
{
Quaternion deltaRotationRight = Quaternion.Euler(rotationRight * Time.deltaTime);
rb.MoveRotation(rb.rotation * deltaRotationRight);
}
if (Input.GetKey("a"))
{
Quaternion deltaRotationLeft = Quaternion.Euler(rotationLeft * Time.deltaTime);
rb.MoveRotation(rb.rotation * deltaRotationLeft);
}
}