Поворот с использованием пары Input.GetAxis
Добавлено: 20 мар 2017, 23:20
Всем привет! Как правильно сделать поворот объекта с использованием пары Input.GetAxis?
Например, у меня есть объект на направление которого я хочу воздейстовать с помощью Input.GetAxis("Vertical") и Input.GetAxis("Horizontal"). Звучит очень просто, но у меня возникла проблема при одновременном отпускании клавиш Vertical и Horizontal. Вот мой скрипт:
Когда нажаты обе клавиши, то их значения (forward и right) равны 1. Если одновременно отпустить клавиши, то эти значения начнут уменьшаться, но будут равны друг другу. Но не всегда выходит одновременно отпустить клавиши, поэтому одно из значений начинает уменьшаться раньше, а следовательно меняется значение направления (direction) и объект начинает поворачиваться в одну из сторон, что неприемлемо.
Как правильно выйти из ситуации?
Например, у меня есть объект на направление которого я хочу воздейстовать с помощью Input.GetAxis("Vertical") и Input.GetAxis("Horizontal"). Звучит очень просто, но у меня возникла проблема при одновременном отпускании клавиш Vertical и Horizontal. Вот мой скрипт:
Синтаксис:
Используется csharp
void Update ()
{
// Ввод
float forward = Input.GetAxis("Vertical");
float right = Input.GetAxis("Horizontal");
// Направление
Vector3 direction = forward * Vector3.forward + right * Vector3.right;
if (direction.magnitude > 1.0f)
direction.Normalize();
else if (direction == Vector3.zero)
return;
// Поворот
Quaternion rotation = Quaternion.LookRotation(direction, Vector3.up);
transform.rotation = Quaternion.RotateTowards(transform.rotation, rotation, 10);
}
{
// Ввод
float forward = Input.GetAxis("Vertical");
float right = Input.GetAxis("Horizontal");
// Направление
Vector3 direction = forward * Vector3.forward + right * Vector3.right;
if (direction.magnitude > 1.0f)
direction.Normalize();
else if (direction == Vector3.zero)
return;
// Поворот
Quaternion rotation = Quaternion.LookRotation(direction, Vector3.up);
transform.rotation = Quaternion.RotateTowards(transform.rotation, rotation, 10);
}
Когда нажаты обе клавиши, то их значения (forward и right) равны 1. Если одновременно отпустить клавиши, то эти значения начнут уменьшаться, но будут равны друг другу. Но не всегда выходит одновременно отпустить клавиши, поэтому одно из значений начинает уменьшаться раньше, а следовательно меняется значение направления (direction) и объект начинает поворачиваться в одну из сторон, что неприемлемо.
Как правильно выйти из ситуации?