В настоящее время я работаю над некоторыми движениями игроков. Основная идея моего игрока перемещается только по горизонтали и по вертикали, а не по диагонали. Я не мог найти разумного решения этой проблемы. На самом деле я не хочу использовать hardidbody или character.controller. Другая вещь, которую я хочу достичь, - когда я нажал несколько клавиш направления, я хочу, чтобы мой игрок переместился непосредственно в последнее нажатое направление. Вот мой код:перейти к последнему нажатому направлению без диагонального перемещения
using UnityEngine;
using System.Collections;
public class controller : MonoBehaviour {
public int movementspeed;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if (Input.GetKey (KeyCode.A)) {
//ratation
transform.localEulerAngles = new Vector3(0,270,0);
//move
transform.Translate (transform.right * movementspeed * Time.deltaTime);
}
else if(Input.GetKey (KeyCode.D)) {
//ratation
transform.localEulerAngles = new Vector3(0,90,0);
//move
transform.Translate (transform.right *(-1)* movementspeed * Time.deltaTime);
}
else if(Input.GetKey (KeyCode.S)) {
//ratation
transform.localEulerAngles = new Vector3(0,180,0);
//move
transform.Translate (transform.forward * (-1) * movementspeed * Time.deltaTime);
}
else if (Input.GetKey (KeyCode.W)) {
//ratation
transform.localEulerAngles = new Vector3(0,0,0);
//move
transform.Translate (transform.forward * movementspeed * Time.deltaTime);
}
else if (Input.GetKey (KeyCode.A)) {
//ratation
transform.localEulerAngles = new Vector3(0,270,0);
//move
transform.Translate (transform.right * movementspeed * Time.deltaTime);
}
}
}
Благодарим вас за ответ, после некоторой работы я понял, что это не очень хороший способ сделать сценарий движения. Я переключил свою работу, теперь я использую charactercontroller. – umuur
Нет проблем. В какой-то момент я могу порекомендовать создавать собственные персональные контроллеры. Это хорошо для практики, и таким образом вы можете получить его, как хотите. – Martin