Здравствуйте.
Есть такой код. Где реализовано движение вперёд, назад, влево, вправо.
Но появилось желание чтобы он двигался по диагонали, относительно своего вектора Z. Нажатиями кнопок W/A, W/D, S/A, S/D.
Вот кусок кода:
private float X, Y, Z;
public int speed;
public int rotSpeed;
public float sensitivity = 3;
private Rigidbody rb;
private Vector3 movement = Vector3.zero;
public Player player;
private int speedX = 5;
private void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
//Поворот игрока
X += Input.GetAxis("Mouse X") * rotSpeed * Time.deltaTime;
Y += Input.GetAxis("Mouse Y") * rotSpeed * Time.deltaTime;
transform.rotation = Quaternion.Euler(Y, X, Z);
//Движение игрока
float z = Input.GetAxis("Vertical");
if (z != 0)
{
movement.z = z;
}
else
movement = Vector3.zero;
if (movement != Vector3.zero)
rb.AddForce(movement * speed);
if (Input.GetKey(KeyCode.D))
{
player.transform.position += Vector3.right * speedX * Time.deltaTime;
}
if (Input.GetKey(KeyCode.A))
{
player.transform.position -= Vector3.right * speedX * Time.deltaTime;
}
}
Посмотрев в интернете реализацию у других пользователей. Не нашёл для своего случая ответа. Либо он некорректно работал.