mecanim анимация в обратную сторону

Общие вопросы о Unity3D

mecanim анимация в обратную сторону

Сообщение pragma 19 июн 2013, 09:11

пытался сделать так:
Синтаксис:
Используется csharp
animator.speed = -runSpeed;

анимация не воспроизводится.

и так:
Синтаксис:
Используется csharp
animator.animation.AddClip(animator.animation.GetClip("animName"), "animName");
...
animator.animation["animName"].speed = -runSpeed;

выдает ошибку
MissingComponentException: There is no 'Animation' attached to the "model" game object, but a script is trying to access it.
You probably need to add a Animation to the game object "model". Or your script needs to check if the component is attached before using it.

MissingComponentException: Там нет "анимация" при "model" цель игры, но скрипт пытается получить к
нему доступ.
Вы, наверное, нужно добавить анимации в игру объект "model". Или ваш сценарий должен проверить, если компонент подключен перед ее использованием.


я бы согласен сделать такие анимации в блендере, только тоже не знаю как. гугл не помог.

Заранее благодарен.
Последний раз редактировалось pragma 19 июн 2013, 19:28, всего редактировалось 1 раз.
pragma
UNец
 
Сообщения: 22
Зарегистрирован: 04 июн 2013, 19:52

Re: mecanim анимация в обратную сторону

Сообщение seaman 19 июн 2013, 09:22

может как и в Легаси нужно перед запуском установить время на конец анимации?
Animator.playbackTime = Animator.recorderStopTime;
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: mecanim анимация в обратную сторону

Сообщение Woolf 19 июн 2013, 16:55

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

Re: mecanim анимация в обратную сторону

Сообщение pragma 19 июн 2013, 20:45

в общем задал прям в инспекторе стейта, в поле "speed" значение -1, пошел назад причем со скоростью равной
animator.speed = runSpeed;

скажите пожалуйста, а как получить доступ к отдельному стейту через аниматор, это как раз таки
animator.animation["animName"].speed = -runSpeed;
что у меня не получилось.
pragma
UNец
 
Сообщения: 22
Зарегистрирован: 04 июн 2013, 19:52

Re: mecanim анимация в обратную сторону

Сообщение pragma 20 июн 2013, 10:57

все я понял.
походу можно создать BlendTree, закинуть туда анимации бега 2 штуки, в одной(в инспекторе) назначить свойство speed -1(они перемножаються с общей скоростью аниматора), а далее вызывать по необюходимости.

но всетаки, вопрос о доступе к свойствам состояний, через скрипт, остается открытым. есть какие нибудь мысли.
pragma
UNец
 
Сообщения: 22
Зарегистрирован: 04 июн 2013, 19:52

Re: mecanim анимация в обратную сторону

Сообщение SmiteVils 20 июн 2013, 11:23

По моему в Аниматоре можно анимацию закинуть и поставить галочку Mirror тогда эта анимация будет воспроизводиться зеркально. Обращаемя к этой анимации когда нужно. А на счет скриптов - я тоже не знаю.
SmiteVils
UNец
 
Сообщения: 15
Зарегистрирован: 17 июн 2013, 07:58

Re: mecanim анимация в обратную сторону

Сообщение pragma 20 июн 2013, 13:29

и поставить галочку Mirror

Нет, это немного не то. Это действительно будет прогонять анимацию как будто перс смотрится в зеркало. Т.е если он бьет правой рукой, то с миррор он будет бить левой.
pragma
UNец
 
Сообщения: 22
Зарегистрирован: 04 июн 2013, 19:52

Re: mecanim анимация в обратную сторону

Сообщение Woolf 20 июн 2013, 22:39

pragma писал(а):в общем задал прям в инспекторе стейта, в поле "speed" значение -1, пошел назад причем со скоростью равной
animator.speed = runSpeed;

скажите пожалуйста, а как получить доступ к отдельному стейту через аниматор, это как раз таки
animator.animation["animName"].speed = -runSpeed;
что у меня не получилось.


Не так надо, через хеш вроде. Вот как делают на оффе
Синтаксис:
Используется csharp
    static int atakState = Animator.StringToHash("Base.Atak1");
     
    void Start (){
    anim = GetComponent<Animator>();
    }
     
    void FixedUpdate ()
    {
    currentBaseState = anim.GetCurrentAnimatorStateInfo(0);
     
    if (currentBaseState.nameHash == atakState){
    Debug.Log("Do Stuff Here");
    }
    }
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: mecanim анимация в обратную сторону

Сообщение pragma 22 июн 2013, 20:32

Woolf, да спасибо я натыкался на этот пример, но почемуто не нашел ему применения(или не смог применить).
Тему можно закрывать, всем спасибо! :)
pragma
UNец
 
Сообщения: 22
Зарегистрирован: 04 июн 2013, 19:52


Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: Google [Bot] и гости: 24