如雨露の日記

学んだことを適当に書いていくサイト

StateMachineBehaviourを使ってみる

Unity5ではステートにStateMachineBehaviourを継承しているスクリプトがアタッチできるようになり、そのステートの再生中にコールバックが呼ばれます。

一覧

・OnStateEnter ステートが呼ばれたとき(Updateの最初)

・OnStateUpdate ステートが呼ばれたとき(最初と最後以外のUpdate)

・OnStateExit ステートが呼ばれたとき(Updateの最後)

・OnStateMove MonoBehaviour.OnAnimatorMoveの直後

・OnStateIK MonoBehaviour.OnAnimatorIKの直後

 

実際に追加してみるとこの様な感じです。

f:id:ninataka_japan:20150727195158j:plain

1つだけではなく、複数スクリプトをアタッチすることが出来ます。

なので処理を細分化し、よりコンポーネント指向っぽい感じになりますね。

写真だと移動スクリプトと向きの変更スクリプト、アニメーションの速度変更スクリプトです、前者2つはともかく後者はなんでこんなことしてるか不思議に見えますよねw

Player制御のスクリプトがすっきりしそうです。というかUpdate内

のコードがほとんどなくなりました。

f:id:ninataka_japan:20150727195849j:plain

f:id:ninataka_japan:20150727203243j:plain

ちょうど今は敵キャラクターの制御を作成していて、EnemySTMを継承させてMoveというスクリプトからEnemyControllerの処理を呼び出しています。

敵キャラクター、プレイヤーの制御もこれでだいぶ作りやすくなったのではないでしょうか。