Установить позицию AnimationClip

Программирование на Юнити.

Установить позицию AnimationClip

Сообщение nikotin 02 фев 2018, 16:22

Здравствуйте. Нужно не играть AnimationClip, а установить персонажа на позицию в нем (например на 1,75 секунд). в Legasy это можно сделать так
[syntax=] void Start () {
anim = GetComponent<Animation>();
anim["mixamo.com"].speed = 0;
anim["mixamo.com"].time = currenttime;//устанавливаем время по моему в секундах
}
float currenttime;// время, на которое устанавливаем позицию AnimationClip
void Update() {
anim["mixamo.com"].time = currenttime;
}[/syntax]
А как это сделать, если тип рига Humanoid в системе Mecanim, не удается найти. Как вы думаете, это возможно, и если да то как?
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение samana 02 фев 2018, 18:16

У аниматора тоже есть speed, только время у клипа идёт от 0 до 1, а не в секундах

Синтаксис:
Используется csharp
_anim.speed = 0;
_anim.Play("New Animation", 0, currentTime);
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Установить позицию AnimationClip

Сообщение nikotin 04 фев 2018, 08:21

samana Спасибо, щас попробую.
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение nikotin 04 фев 2018, 11:32

Попробовал,установил speed на 0 и из юнити менял публичную величину currentTime

Синтаксис:
Используется csharp
private Animator animator;
   public float currentTime;
    void Start () {
animator = GetComponent<Animator>();animator.speed = 0;animator.Play("myanimlegasyn", 0, currentTime/15);
    }
   
    void Update() {
animator.Play("myanimlegasyn", 0, currentTime / 15);
    }


В итоге позиция меняется, но таз (Hips) падает на пол, не меняет своего положения и не поворачивается как в анимации, "myanimlegasyn" -имя анимации в аниматоре (там одна стэйтмашин), посмотрите видео пожалуйста, это можно как то исправить?
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение samana 04 фев 2018, 12:06

Странно. А попробуйте убрать флаг Apply Root Motion у аниматора в инспекторе, возможно причина в этом, а возможно и нет.
Я так понимаю, что даже без моего кода персонаж провалится вниз? Тогда надо искать причину в настройках.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Установить позицию AnimationClip

Сообщение nikotin 05 фев 2018, 09:31

Поэтапно все проверил, сделал новый проект - таз перестал падать на пол, но все равно таз не перемещается и не вращается, наверно это связано с тем, что метод animator.Play("myanimlegasyn", 0, currentTime/15); всегда устанавливает таз в нулевую позицию и ориентацию. Убрал Motion -не помогло -таз вообще перестает трансформироваться даже без скрипта (сн.1). У вас также все работает?
Изображение
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение samana 05 фев 2018, 11:37

nikotin писал(а): У вас также все работает?

Я не могу этого знать, ведь у меня нет вашего персонажа с анимацией :-??
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Установить позицию AnimationClip

Сообщение nikotin 05 фев 2018, 17:37

Вообще если animator.speed=1; то таз меняет свое положение но все равно не корректно, вот мой простенький проект http://rgho.st/884f2xy9j.
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение samana 05 фев 2018, 18:10

Ага, я понимаю.
1) выделите персонажа в проекте
2) зайдите в настройки экспорта его анимации
3) укажите корневую кость (там было none)

Изображение
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Установить позицию AnimationClip

Сообщение nikotin 06 фев 2018, 10:40

samana писал(а):Ага, я понимаю.
1) выделите персонажа в проекте
2) зайдите в настройки экспорта его анимации
3) укажите корневую кость (там было none)

Изображение

Спасибо огромное, все работает!
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение nikotin 11 фев 2018, 11:13

А как можно не установить а узнать текущую позицию AnimationClip?
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение nikotin 11 фев 2018, 12:05

нашел похоже - GetCurrentAnimatorStateInfo(0).normalizedTime;
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: Установить позицию AnimationClip

Сообщение samana 11 фев 2018, 12:08

Ищите в сети решения, их там уже много накопилось
https://docs.unity3d.com/ScriptReferenc ... dTime.html - показывает прогресс клипа от 0 до 1
https://answers.unity.com/questions/103 ... mator.html - показывает текущее время клипа
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Скрипты

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

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