Делаю анимацию через тригеры и есть такая проблема, что если быстро нажимать кнопку, то анимация проигрывается 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 до тех пор, пока анимация перезарядки не пройдет.
Таким образом образуется несколько флагов - регистров. Для каждого действия отдельно