Не работает анимация через Animator в Unity

Я делаю анимацию и у меня не работает не через Animation, ни через Animator, что я делаю не так?

C начало была проблема что переменная вечно было как false, я попробовал исправить это, теперь предмет вообще пропадает.

Подробнее в скриншотах >> [Изображение 11, Изображение 2


using UnityEngine;

public class SpearAttack : MonoBehaviour
{
    [Header("Анимация играет")] 
    [SerializeField] private bool attackPlaying;
    
    [Header("Анимации")] 
    [SerializeField] private string attack;

    private Animator _animator;
    private void Start()
    {
        _animator = GetComponent<Animator>();
    }

    private void Update()
    {
        AttackAnimation();
    }

    private void AttackAnimation()
    {
        if (Input.GetMouseButtonDown(0))
        {
            attackPlaying = true;
            
            if (attackPlaying)
            {
                _animator.SetBool(attack, true);
                attackPlaying = false;
            }
            else
            {
                _animator.SetBool(attack, false);
            }
        }
    }
}



Ответы (1 шт):

Автор решения: For Tankista

Готовый код решения! Если говоря коротко то, если кнопка нажата то мы будем производить анимацию в фиксираваном количестве раз!

Использовал FixedUpdate, потому что так не будет багов с анимацией, FixedUpdate обновляет 50 раз в секунду и не обращает внимания на FPS, так будет меньше багов с проверкой и т.д.


using UnityEngine;

public class SpearAttack : MonoBehaviour
{
    [Header("Анимации")] 
    [SerializeField] private string attack;

    private Animator _animator;
    private void Start()
    {
        _animator = GetComponent<Animator>();
    }

    private void FixedUpdate()
    {
        AttackAnimation();
    }

    private void AttackAnimation()
    {
        if (Input.GetMouseButtonDown(0))
        {
            _animator.PlayInFixedTime("SpearAttack");
            Debug.Log("Анимация работает :D!");
        }
        else
        {
            Debug.Log("Жду нажатия кнопки!");
        }
    }
}

→ Ссылка