У меня есть код, который позволяет мне двигаться и вращаться, как в Minecraft:
using UnityEngine;
public class playerMov : MonoBehaviour
{
public float movementSpeed = 5.0f;
public float clockwise = 1000.0f;
public float counterClockwise = -5.0f;
public Camera cam;
void Start()
{
}
void Update()
{
if (Input.GetKey(KeyCode.W))
{
transform.position += transform.forward * Time.deltaTime * movementSpeed;
}
else if (Input.GetKey(KeyCode.S))
{
transform.position -= transform.forward * Time.deltaTime * movementSpeed;
}
else if (Input.GetKey(KeyCode.A))
{
transform.position -= transform.right * Time.deltaTime * movementSpeed;
}
else if (Input.GetKey(KeyCode.D))
{
transform.position += transform.right * Time.deltaTime * movementSpeed;
}
transform.Rotate(0, Input.GetAxis("Mouse X") * Time.deltaTime * clockwise, 0 );
cam.transform.position = transform.position;
cam.transform.Rotate(-Input.GetAxis("Mouse Y"), Input.GetAxis("Mouse X"), 0);
Quaternion q = cam.transform.rotation;
q.eulerAngles = new Vector3(q.eulerAngles.x, q.eulerAngles.y, 0);
cam.transform.rotation = q;
}
}
, но если я быстро поверну своего персонажа и начну двигаться, он не будет работать правильно (например, если я пытаюсь двигаться быстро поверните налево и направо, затем поверните налево, вместо этого нажимая W, чтобы переместиться вверх, персонаж переместится в другое направление). Так в чем же проблема в моем коде?