Активна ли анимация Unity, если соблюдены определенные условия? - PullRequest
0 голосов
/ 22 сентября 2019

Я занимаюсь разработкой 2D-игры в Unity и столкнулся с проблемой.При попытке создания анимационных переходов для одной из моих анимаций по какой-то причине Unity мгновенно или очень быстро деактивирует мою анимацию (например, менее чем через секунду после того, как я ее активировал).Однако, когда у меня нет перехода к анимации, анимация работает нормально.Однако мне нужно иметь возможность перевести игровой объект обратно в состояние, в котором он находился до анимации после выполнения определенного условия, и поэтому я не могу оставить анимацию включенной.Кто-нибудь знает, как я могу решить эту проблему?

Я попытался переключить способ активации анимаций, чтобы посмотреть, может ли это быть связано с этим, попробовав и bool, и триггер как условие, которое определяет, когда переход долженслучается, но возникает та же проблема

Это грубая схема того, как я активирую анимацию

public class InteractControl : MonoBehaviour, IPooledObject
{ 
    public static float timeLeft = 10f;

    public void OnObjectSpawn()
    {
        anim = GetComponent<Animator>();
    }

    // Change this method to just be a temporary obstacle
    void Update() 
    {
        timeLeft -= Time.deltaTime;

        if (timeLeft > 0)
        {
            anim.enabled = true;
        }


        if (timeLeft < 0)
        {
            anim.SetTrigger("FollowAd");
        }
    }
}

Объявление с переходом:

Ad Follow with transition

Объявление следует без перехода:

enter image description here

Настройки перехода:

enter image description here

Анимация должна активироваться, если timeLeft больше 0, и деактивироваться, как только она станет меньше 0, и вернуть игровой объект в состояние, в котором он находился до запуска анимации.Прямо сейчас, если Ad Follow_ не имеет перехода, анимация работает при вызове, но не отключается.если к Ad Follow_ подключено пустое состояние, к которому оно должно перейти, то должно

anim.SetTrigger("FollowAd"); 

вызываться так, как показано выше, оно работает менее секунды или не работает вовсе, а затем переключается обратно в состояние по умолчанию,Он должен переключаться обратно только тогда, когда timeLeft < 0.

1 Ответ

0 голосов
/ 22 сентября 2019

Вы можете создать public RuntimeAnimatorController animCon для необходимой анимации.Когда ваши условия будут выполнены.Вы можете сделать anim.runtimeanimatorcontroller = animCon;.

И когда условие ложно, сделайте это anim.runtimeanimatorcontroller = null;.Это не лучший способ, но быстрый и лучший, чем у большинства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...