在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