C# 设置MecAnim触发器一次,直到状态返回

C# 设置MecAnim触发器一次,直到状态返回,c#,animation,unity3d,unity3d-mecanim,C#,Animation,Unity3d,Unity3d Mecanim,我正在尝试使用Mecaim在Unity中的角色上播放一个动画。我对这些都不熟悉,所以我可能完全错了 基本层包含很多行走的东西,但我试图触发的动画位于一个单独的右臂层上,默认状态为空。有一个Wave触发器应用于Default->Wave转换,在Wave->Default转换上有一个定时退出 然后,我有一个脚本(在调试时),当您按下“O”键时,它会触发,并使角色波动一次 if (Input.GetKey(KeyCode.O)) { AnimatorStateInfo currentStat

我正在尝试使用Mecaim在Unity中的角色上播放一个动画。我对这些都不熟悉,所以我可能完全错了

基本层包含很多行走的东西,但我试图触发的动画位于一个单独的
右臂
层上,默认状态为空。有一个
Wave
触发器应用于
Default->Wave
转换,在
Wave->Default
转换上有一个定时退出

然后,我有一个脚本(在调试时),当您按下“O”键时,它会触发,并使角色波动一次

if (Input.GetKey(KeyCode.O))
{
    AnimatorStateInfo currentState = this.animator.GetCurrentAnimatorStateInfo(1);
    if (currentState.IsName("Right Arm.Default"))
    {
        Debug.Log("Waving triggered");
        this.animator.SetTrigger("Wave");
    }
}
动画按预期播放,但控制台显示,
IsName
检查总是作为true通过,这让我觉得我做错了什么

in转换需要几分之一秒才能完成,然后如果再次调用
SetTrigger
方法,动画将播放两次


我正在寻找一种简单的方法,确保只有在该层的状态完全恢复到默认状态时才设置触发器。

您不使用参数控制状态有什么特殊原因吗?不,我还在努力找出最好的!我认为我想一次性发生的事情可能更适合触发器。如果我使用bool参数,我是将其设置回false next frame,还是需要跟踪动画时间并在其达到1.0时将其设置回false?我个人会在动画师身上设置一个
挥动
bool&然后使用
IsInTransition
检查动画师是否仍在转换,然后您可以执行类似
的操作,如果(anim.GetBool(“挥舞”)和&!anim.IsInTransition()
(这都是假设)1.是的,看看有人为动画创建了一个很好的小事件系统,它可能在这里派上用场。2.是的,通常我倾向于为需要单独或附加动画的离散身体部位设置不同的层。实际上,您可以使用,并在剪辑时间线上触发一个函数。。。