Что-то не так с движением и вращением? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть код, который позволяет мне двигаться и вращаться, как в 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, чтобы переместиться вверх, персонаж переместится в другое направление). Так в чем же проблема в моем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...