在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