Циклы анимации, даже если время цикла не установлено в Unity3D - PullRequest
0 голосов
/ 08 декабря 2018

Привет У меня есть вопрос о том, почему анимация продолжает циклически выполняться, даже если у меня отключено время цикла анимации и используется логическое значение для управления происходящим.Ниже приведен мой код, заставляющий моего робота умереть, а также снимки экрана Mechanim.

ZoltainHealth.cs

void Update () {
    if (!isAlive(ZoltainHealthSlider.value)) {
        isDead = true;
        gameObject.GetComponent<Animator>().SetTrigger("Die");

        if (isDead) {
            isDead = false;
            gameObject.GetComponent<Animator>().SetTrigger("Alive");
            reset(gameObject, startingPos, gameObject.tag);
            gameObject.GetComponent<Slider>().value = 100f;
        }
    }
}

Базовый класс Characters.cs, где я получаю Alive ()

public bool isAlive(float life) {
    bool isAlive = true;

    int health = Mathf.RoundToInt(life);

    if (health <= 0) {
        isAlive = false;
    }
    return isAlive;
}

Снимок экрана Mechanim: Снимок экрана

У меня также возникают проблемы с восстановлением ползунка здоровья до полного значения, когда Золтан регенерируется после смерти, чтобы начать новыйигра, как написано в коде if (isDead) ниже.

1 Ответ

0 голосов
/ 09 декабря 2018

Я предполагаю, что вы пытаетесь воспроизвести анимацию Die, затем воспроизвести анимацию Alive и сбросить статус.

Тогда приведенный ниже код должен выполнить эту работу.

void Update () {
    if (!isAlive(ZoltainHealthSlider.value)) {
        StartCoroutine (WaitDieAnimationFinishAndPlayAlive);
    }
}

private void WaitDieAnimationFinishAndPlayAlive () {
    yield return new WaitForSeconds(DieAnimationTime);
    gameObject.GetComponent<Animator>().SetTrigger("Alive");
    StartCoroutine (WaitAliveAnimationFinishAndReset);
}
private void WaitAliveAnimationFinishAndReset () {
    yield return new WaitForSeconds(AliveAnimationTime);
    reset(gameObject, startingPos, gameObject.tag);
    gameObject.GetComponent<Slider>().value = 100f;
}

Я не уверен, что возникла проблема зацикливания анимации, вызванная установкой триггеров Die и Alive в одном кадре Update.

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