Как заставить игрока двигаться в том направлении, в котором он стоит - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть эта игра в единстве, которая все еще находится в разработке.Мой код движения до сих пор может перемещать игрока с помощью клавиш со стрелками.У меня также есть функция для перемещения игрока с помощью мыши.Оказывается игрок на том, как он смотрит.Допустим, игрок смотрит влево.Если я нажму на клавишу со стрелкой вверх, она все еще движется вперед.Я хочу переместить игрока в том направлении, в котором он находится.

Код:

using System.Collections.Generic;
using UnityEngine;

 public class PlayerMovement : MonoBehaviour {

 public float distance = 5f;

 public Transform playerCam;

 void FixedUpdate () {
  transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, 
  Camera.main.transform.localEulerAngles.y, transform.localEulerAngles.z);
  if (Input.GetKey(KeyCode.LeftArrow))
  {
      Vector3 position = this.transform.position;
      position.x--;
      this.transform.position = position;
  }
  if (Input.GetKey(KeyCode.RightArrow))
  {
      Vector3 position = this.transform.position;
      position.x++;
      this.transform.position = position;
  }
  if (Input.GetKey(KeyCode.UpArrow))
  {
      Vector3 position = this.transform.position;
      position.z++;
      this.transform.position = position;
  }
  if (Input.GetKey(KeyCode.DownArrow))
  {
      Vector3 position = this.transform.position;
      position.z--;
      this.transform.position = position;
  }
  if (Input.GetKey("W"))
  {
      Vector3 position = this.transform.position;
      position.z++;

      this.transform.position = position;
  }
  if (Input.GetKey("S"))
  {
      Vector3 position = this.transform.position;
      position.z--;

      this.transform.position = position;
  }
  if (Input.GetKey("A"))
  {
      Vector3 position = this.transform.position;
      position.x--;

      this.transform.position = position;
  }
  if (Input.GetKey("D"))
  {
      Vector3 position = this.transform.position;
      position.x++;

      this.transform.position = position;
  }
 }
}

1 Ответ

0 голосов
/ 27 декабря 2018

Используйте transform.forward для определения направления движения игрока.

Это всегда будет вектор единиц, поэтому, если вы просто хотите переместить позицию ровно на одну единицу в направлении вперед игрока, выможно просто добавить его к transform.position:

if (Input.GetKey("W")) 
{
    this.transform.position += this.transform.forward;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...