Я пытался использовать в своей игре смесь аниматоров и игровых элементов Unity, и по большей части это работает хорошо, но есть две проблемы, с которыми я сталкивался в течение долгого времени, и я лучше всего обойти их. Сегодня я снова ударился головой о них, и, не найдя решения в Интернете, решил заставить свою ленивую задницу наконец попросить о помощи.
Основная настройка состоит в том, что мои персонажи имеют:
Аниматор с его контроллером, конечным автоматом и т. Д., Который используется главным образом для движения, прыжков, лазания и т. Д. В случае, если это уместно, у каждого персонажа есть контроллер переопределения общего типа.
Очень простой воспроизводимый график, содержащий только выходные данные (обертывание аниматора) и входные данные (обертывание определенного клипа, который я хочу воспроизвести в данный момент). Используется для действий и атак.
У меня есть следующие проблемы:
1 - Кажется, я не могу найти элегантный, чистый способ узнать, когда клип, поданный на график (вторая часть выше), закончен. В настоящее время я обхожу это путем простого вычисления длины клипа и деления на текущий коэффициент скорости анимации; Я также должен учитывать, когда анимация приостановлена (например, hittop). Это делает работу, но довольно элегантно, и я уверен, что должен быть лучший способ.
2 - Самое главное, когда я закончу с графиком и автономной анимацией, значения всех свойств, к которым прикасается клип, становятся заблокированными до их последнего значения. Они остаются заблокированными даже во время любой анимации, которую играет обычный аниматор; даже если любая из этих более поздних анимаций изменит свое значение, она вернется к этому заблокированному значению «последнего кадра», когда они закончатся.
Я пытался решить эту проблему несколькими способами:
2.1- Установите значение по умолчанию / желаемое значение свойств в анимации бездействия / по умолчанию (чтобы «пометить» их как анимируемые свойства в анимации обычного аниматора). Это только исправляет проблему для любой анимации, которой касаются; любая другая анимация, воспроизводимая после этого, мгновенно возвращается к значению, заблокированному последним кадром анимации, воспроизводимой графиком.
2.2- Уничтожить воспроизводимую упаковку анимации (я все равно делаю это для очистки, так как мне нужно воссоздавать ее каждый раз, когда воспроизводится новая анимация).
2.3- Уничтожить график и каждый раз создавать его заново (что удивительно, даже при этом значения остаются заблокированными).
2.4- Отключение аниматора и его повторное включение.
Откровенно говоря, я начинаю сходить с ума из-за второй проблемы, поэтому любая помощь будет чрезвычайно признательна. Заранее спасибо за любую помощь!