Ограничение Quaternion.AngleAxis
Я реализовал поворот головы врага, в зависимости от положения игрока. Т.е. враг постоянно целится в игрока и параллельно с этим его голова направлена в эту сторону по оси z. Происходит это в скрипте врага следующим образом:
Vector3 directionHead = Player.position - transform.position;
angleHead = Mathf.Atan2(directionHead.y, directionHead.x) * Mathf.Rad2Deg; //угол головы, когда враг повёрнут направо
angleHead2 = Mathf.Atan2(-directionHead.y, -directionHead.x) * Mathf.Rad2Deg; //угол головы, когда враг повёрнут налево
if (!isFacingRight && isGrounded) // если враг повёрнут налево и на земле
{
head.localRotation = Quaternion.AngleAxis((angleHead2 / 5) * -1, Vector3.forward); //поворот головы
}
else
{
if (isFacingRight && isGrounded) // если враг повёрнут направо и на земле
{
head.localRotation = Quaternion.AngleAxis(angleHead / 5, Vector3.forward); //поворот головы
}
}
Всё работает, однако присутствует проблема. Она заключается в том, что как только игрок очень близко подходит к врагу - голова врага резко изменяет своё положение по оси z на неправильное(непонятно перекручивается). Я заметил, что в этот момент angleHead становится равен 179 + остаток. Мне пришла идея, что чтобы решить проблему, можно просто ограничивать по значению этот самый угол (например: с -180 по 170, дабы угол не становился равен 179). Подскажите, как я могу решить свою проблему. Заранее благодарю за ответ!