mecanim бленд движения вперед и поворот

Импорт текстур, моделей, звуков и пр.

mecanim бленд движения вперед и поворот

Сообщение demozbox 09 дек 2015, 18:35

суть вопроса - разворот по очень большому кругу, когда как надо почти резко.
аниматор контроллер принимает axis vertical и
разницу camera.forward body.forward - после манипуляций, это float в дипазоне(-180;180)
в контроллере блендер 2D Cartesian с параметрами forward и turn, содержит три анимации- бег по кругу влево, бег вперед, бег по кругу вправо.
все классно, но только хотелось бы, чтобы персоаж быстрее разворачивался на форвард камеры, как если бы я его кватернионом поворачивал.
что делать?
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: mecanim бленд движения вперед и поворот[РЕШЕНО]

Сообщение demozbox 10 дек 2015, 19:36

если кому интересно:
в бленд три так и оставил анимацию поворота, но в настройках анимации заморозил RootTransformRotation -тоесть, анимация производится(тело наклоняется), но не поворачивается.
В коде добавил разворот тела через кватернион
Синтаксис:
Используется csharp
void Turning()
    {
         _rot = _camera.rotation.eulerAngles.y - _body.rotation.eulerAngles.y;
        if (_rot > 180)
        {
            _rot = -1 * (360 - _rot);           // делаю его отрицательным и обратным
        }
        else if (_rot < -180)
        {
            _rot = (360 + _rot);           // делаю его  обратным
        }
        _animator.SetFloat("turnRight", _rot);

// добавленный блок    
        _camForward = _camera.transform.forward;  // получаю вектр
        _camForward.y = 0; // Проэктирую вектор на XZ плоскость
        Quaternion newQ = Quaternion.LookRotation(_camForward);
        _body.rotation = Quaternion.RotateTowards(_body.rotation, newQ, 100 * Time.deltaTime);
    }
 

прошу проверить добавленный блок на производительность (может есть менее затратные методы?)
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: mecanim бленд движения вперед и поворот

Сообщение Cr0c 10 дек 2015, 23:44

А поворот через transform.Rotate( Vector3 axis, float angle) не будет быстрее? Взять ось Vector3.up и готово, поворот относительно оси Y на angle градусов (в системе координат объекта).
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: mecanim бленд движения вперед и поворот

Сообщение demozbox 11 дек 2015, 08:55

Проверить, вероятно не смогу, только реализовать смогу)). В смысле - как я смогу увитеть выигрыш производительности?
Аватара пользователя
demozbox
UNITрон
 
Сообщения: 170
Зарегистрирован: 20 июн 2014, 07:57

Re: mecanim бленд движения вперед и поворот

Сообщение Cr0c 11 дек 2015, 09:25

demozbox писал(а):Проверить, вероятно не смогу, только реализовать смогу)). В смысле - как я смогу увитеть выигрыш производительности?

Замерить время 1кк поворотов каждым способом.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81


Вернуться в Медиа

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2