Я создаю 3D-игру в Unity, и у меня есть скрипт, который позволяет игроку осматриваться с помощью мыши. Для перемещения игрока в том направлении, в котором он смотрит, я использую transform.forward. Моя проблема в том, что когда они смотрят в потолок и нажимают «W» (вперед), они начинают подниматься в воздух. В основном мне нужно знать, есть ли метод или подметод transform.forward
, который позволяет перемещаться только по осям x и z.
Вот мой скрипт движения (C#):
if (transform.rotation.x < -10)
{
//do no forward or backward movement
Debug.Log("Rotation too great to forward move...");
tooGoodForMovement = true;
}
else
{
tooGoodForMovement = false;
if (Input.GetKey(KeyCode.W))
{
//Forward
player.velocity = (transform.FindChild("Main Camera").transform.forward * moveSpeed);
}
if (Input.GetKey(KeyCode.S))
{
//Back
player.velocity = (-transform.FindChild("Main Camera").transform.forward * moveSpeed);
}
}
if (Input.GetKey(KeyCode.A))
{
//Left
player.velocity = -transform.FindChild("Main Camera").transform.right * moveSpeed;
}
if (Input.GetKey(KeyCode.D))
{
//Right
player.velocity = transform.FindChild("Main Camera").transform.right * moveSpeed;
}