- 左右のドア PlaneL, PlaneR に Animator : PlaneL2, PlaneR2 を設定
- Animator はそれぞれ OpenDoor, CloseDoor, idleDoor の3つの Animation を制御
Parameter : openDoor (Bool) を設定 - Animation には Transitions とその動作条件 Parameter : openDoor を設定
Animation Window(cmd+6) で時間による動作を設定 - C# からの実行: "openDoor" の値を設定
public Animator animatorBoschDoorRight; public Animator animatorBoschDoorLeft; public void animatorDoor(){ SoundManager.Instance.PlaySE(23); // ドアの開閉開始時の効果音 animatorBoschDoorRight.SetBool("openDoor", !animatorBoschDoorRight.GetBool("openDoor")); animatorBoschDoorLeft.SetBool("openDoor", !animatorBoschDoorLeft.GetBool("openDoor")); } public void OnAnimationCompleted(string doorObj){ SoundManager.Instance.PlaySE(24); // ドアの開閉終了時の効果音 }
- Animation Windows でイベントを追加(OpenDoorR2, CloseDoorR)
- イベントの実行タイミングを指定
- 実行する Function を設定
- このとき Object はイベントを追加した Animation を含むものを指定しなければならないので注意。( OpenDoorR2 でも PlaneR2 でもOK)
Function が設定済みの Object があるからといって、Animation に関係ないものを指定すると「AnimationEvent 'OnAnimationCompleted' has no receiver!のエラー」になる。
画像を回転させながら、横移動していたが、画像の横幅が2倍のObject を作成して、これの片側に寄せて画像を置けば回転だけで済むことにいまさら気がついた。