Доброго времени суток друзья.
Есть код:
public class Man : MonoBehaviour
{
public float Speed, RotateSpeed, RotateGradus;
void Update () {
if (RotateGradus == 90)
{
if (transform.eulerAngles.z < RotateGradus)
{
transform.rotation = Quaternion.Slerp(transform.rotation, new Quaternion(transform.rotation.x, transform.rotation.y, RotateGradus, 2), RotateSpeed * Time.deltaTime);
}
}
if (RotateGradus == 270)
{
if (transform.eulerAngles.z < RotateGradus)
{
transform.rotation = Quaternion.Slerp(transform.rotation, new Quaternion(transform.rotation.x, transform.rotation.y, RotateGradus, 2), RotateSpeed * Time.deltaTime);
Debug.Log("сработало");
}
}
}
}
В итоге когда RotateGradus равен 90, transform.rotation.z объекта равен 0, тогда всё отрабатывает нормально, а во второй части кода, когда RotateGradus равен 270, а transform.rotation.z объекта равен 180 - Quaternion.Slerp никак не отрабатывает, хотя сообщение из дебага "сработало" видно в консоли. В рантайме когда смотрю, угол объекта по Z двигается на 179.151 и замирает. Начинаю менять в ручную (двигать ползунок), возвращается обратно на 179.151. Хотя по итогу, должен превратиться в 270, если бы код отработал.
Объясните пожалуйста, почему так происходит, всё уже пересмотрел. Спасибо заранее.