Unity - Animator的IsInTransition簡單使用方式

  簡單說明關於Animator的IsInTransition的用法。先簡單製作幾個狀態放在Animator中並且做簡單的Transition,也就是時間播放結束的時候會自動切到下一個狀態。





  在Animator中各個State切換會看到這樣的箭頭,所以使用 animator.IsInTransition 的話就是只要在切換State的狀態下就會觸發,不過這會有一個問題,單獨使用這個指令沒辦法在切入特定State的時候判斷,所以通常會順便判斷現在是不是在哪個State。


  另外如果是使用 !animator.IsInTransition 的話,也就是在State中的時候都會一直觸發。同樣這邊也要先判斷是不是在哪個State下,不然你就會碰到每個狀態都觸發的問題。

參考Code
public Animator animator;
void Update () {
    AnimatorStateInfo currentState = animator.GetCurrentAnimatorStateInfo(0);

    if(Input.GetKeyDown(KeyCode.Space)) {
        animator.SetBool("Press", true);
    }

    if (currentState.nameHash == Animator.StringToHash ("Base Layer.TestAnim1") && animator.IsInTransition (0)) {
        animator.SetBool("Press", false);
        Debug.Log("TestAnim1 transition");
        //在切換進TestAnim1跟切換出去的時候都會觸發
    }

    if (currentState.nameHash == Animator.StringToHash ("Base Layer.TestAnim2") && !animator.IsInTransition (0)) {
        Debug.Log("In TestAnim2")
        //在State當中的時候會一直觸發
    }
}

No comments:

Post a Comment