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;
}
}
Любые предложения относительно того, где я иду не так, или что я могу сделать, чтобы анимация воспроизводилась полностью, прежде чем переходить к остальному состоянию игры?