Делаю анимацию через тригеры и есть такая проблема, что если быстро нажимать кнопку, то анимация проигрывается 2 раза.
using UnityEngine; public class RayShoot : MonoBehaviour { private AnimatorStateInfo stateInfo; private int idleHash = Animator.StringToHash("Base Layer.Bolt_Idle"); [SerializeField] private Animator anim; void Update() { stateInfo = anim.GetCurrentAnimatorStateInfo(0); if (stateInfo.fullPathHash == idleHash) { if (Input.GetKeyDown(KeyCode.R)) { anim.SetTrigger("reload"); } if (Input.GetKeyDown(KeyCode.F)) { anim.SetTrigger("hit"); } } } }
Нужно вводить дополнительную проверку - флаг.
Если в данный момент логично производить действие, персонаж: стоит, бежит или идет. То можно флаг переключить.
Получиться
if(Input.GetKeyDown(KeyCode.F) && isDone)
....
Как только нажали F - флаг уходит в false до тех пор, пока анимация перезарядки не пройдет.
Таким образом образуется несколько флагов - регистров. Для каждого действия отдельно