Unity: 2D аниматор воспроизводит только первый кадр анимации

У меня проблема с получением анимации смерти, чтобы играть полностью.

У меня правильно настроена анимация в аниматоре Unity с bool isDead в качестве условия для изменения состояния с "Любое состояние" на "Смерть вампира".

Аниматор изображения

У персонажа игрока уже есть прикрепленный Аниматор (и он действительно отлично воспроизводит анимацию полета по умолчанию).

Компонент аниматора прилагается

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

//Game over on collision with obstacles
private void OnCollisionEnter2D(Collision2D collision)
{
...
}

называется.

Вот мой скрипт контроллера игрока...

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class VampireBatController : MonoBehaviour {

    //Declarations
    Rigidbody2D bat;
    public static int score;
    public static int finalScore;
    public static int highScore;
    public Text scoreText;
    public AudioClip flapSound;
    public AudioClip crashSound;
    public int batColliderIndex = 0;

    public Animator myAnimator;

    [SerializeField] private PolygonCollider2D[] colliders;



    // Use this for initialization
    void Start () {
        score = 0;

        bat = GetComponent<Rigidbody2D>();

        myAnimator = gameObject.GetComponent<Animator>();

        scoreText.text = score.ToString();
    }

    // Update is called once per frame
    void Update()
    {
        //Update score display
        scoreText.text = score.ToString();
        Debug.Log("SCORE: " + score);

        //Player input
        if (Input.GetMouseButtonDown(0))
        {
            bat.velocity = new Vector2(0, 4);
            SoundManager.instance.PlaySingle(flapSound);
        }
    }

    //Point increment function
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Point" && batColliderIndex == 9)
        {
            score++;
            return;
        }
    }

    //Game over on collision with obstacles
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag=="Skyscraper" || collision.gameObject.tag=="GroundCollider")
        {
            //Impact sound plays
            SoundManager.instance.PlaySingle(crashSound);

            //vampire_death animation plays
            //I wonder why only the first frame of the animation plays?
            myAnimator.SetBool("isDead", true);

            finalScore = score;
            Debug.Log("Game Over State Final Score: " + finalScore);

            if (score >= highScore)
            {
                highScore = score;
            }

            //Send highScore to PlayerPrefs
            PlayerPrefs.SetInt("savedHighScore", highScore);
            Debug.Log("Game Over State HIGH SCORE: " + highScore);

            //Load game over screen
            SceneManager.LoadScene(2);
            Debug.Log("Loading game over scene");
        }
    }

    //Sprite collider selector by animation frame
    public void SetColliderForSprite(int spriteNum)
    {
        colliders[batColliderIndex].enabled = false;
        batColliderIndex = spriteNum;
        colliders[batColliderIndex].enabled = true;
    }

}

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

0 ответов

Другие вопросы по тегам