Почему не срабатывает условие Quaternion.Slerp ?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Почему не срабатывает условие Quaternion.Slerp ?

Сообщение Sice 01 мар 2019, 16:20

Доброго времени суток друзья.
Есть код:
Синтаксис:
Используется csharp
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 (RotateGradus > transform.eulerAngles.z)
                {                    
                    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, если бы код отработал.

Объясните пожалуйста, почему так происходит, всё уже пересмотрел. Спасибо заранее ^:)^
Аватара пользователя
Sice
UNIт
 
Сообщения: 87
Зарегистрирован: 25 окт 2014, 13:51

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение 1max1 01 мар 2019, 16:47

Кто тебя вообще учил так кватернионы создавать?
Синтаксис:
Используется csharp
var to =  Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, RotateGradus);
transform.rotation = Quaternion.Slerp(transform.rotation, to, RotateSpeed * Time.deltaTime);
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение Sice 01 мар 2019, 16:53

1max1 писал(а):Кто тебя вообще учил так кватернионы создавать?
Синтаксис:
Используется csharp
var to =  Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, RotateGradus);
transform.rotation = Quaternion.Slerp(transform.rotation, to, RotateSpeed * Time.deltaTime);
 

Спасибо, что пояснили. Увидел где-то, что так делали)
Аватара пользователя
Sice
UNIт
 
Сообщения: 87
Зарегистрирован: 25 окт 2014, 13:51

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение AngryCat 01 мар 2019, 18:27

1max1 писал(а):Кто тебя вообще учил так кватернионы создавать?
Синтаксис:
Используется csharp
var to =  Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, RotateGradus);
transform.rotation = Quaternion.Slerp(transform.rotation, to, RotateSpeed * Time.deltaTime);
 

может сегодня без "var"??
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение seaman 01 мар 2019, 19:06

Чем вам var не нравится? Что за дискриминация?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение Woolf 02 мар 2019, 11:01

seaman писал(а):Чем вам var не нравится? Что за дискриминация?


Мне тоже не нравится. За неявную типизацию в объяснялках и примерах надо бить по рукам.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Почему не срабатывает условие Quaternion.Slerp ?

Сообщение AngryCat 03 мар 2019, 01:41

seaman писал(а):Чем вам var не нравится? Что за дискриминация?

Не красивое название...
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot], siuovich и гости: 24