Ограничение 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). Подскажите, как я могу решить свою проблему. Заранее благодарю за ответ!


Ответы (0 шт):