Мой игрок может двигаться только по прямым горизонтальным и вертикальным линиям. Я хочу определить, движутся ли они влево, вправо, назад или вперед в любой момент времени. В игре они могут вращаться как угодно.
Я пытался обнаружить это, когда пользователи нажимали клавиши со стрелками, а затем проверяли, отличается ли текущее положение игрока вдоль плоскостей X или Y (преобразование Z) от того, что было раньше. Кажется, это не сработало.
Я также пробовал использовать этот код из ответов Unity, где был задан аналогичный вопрос, но у меня он не работает:
float dot = Vector3.Dot(transform.forward, Vector3.forward);
if(dot > 0.9) // going forward direction
else if (dot < - 0.9) // going opposite to forward direction
else{
Vector3 cross = Vector3.Cross(transform.forward, Vector3.forward);
// This could be the other way around...never remember which order
if(cross.y < 0) // going right
else // going left
}