【Unity5】「State Machine Behaviour」をアニメーションに導入する。

  • |
【Unity5】「State Machine Behaviour」をアニメーションに導入する。
   

アニメーション時に、何か特別なアクションを行う際に、「State Machine Behaviour」という特別なスクリプトが利用できるようになりました。
通常のUnityスクリプトのような感じで利用ができます。
例えば、アニメーションに入る時に何か音を鳴らす、このような利用ができます。

State Machine Behaviour

まずは、アニメーションステートのInspectorを見てください。
このAddBehaviourのボタンを押せば、「State Machine Behaviour」が利用できます。
2015-5-16-fdas

ボタンを押せば以下のようなスクリプトが立ち上がると思います。
ここにアニメーションが呼び出された時の処理を書けば良いのです。
using UnityEngine;
using System.Collections;

public class hoge : StateMachineBehaviour {

	 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
	//override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
	//override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
	//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
	//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateIK is called right after Animator.OnAnimatorIK(). Code that sets up animation IK (inverse kinematics) should be implemented here.
	//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}
}

色々なイベント関数が用意されていますので、コメントアウトをして利用しましょう。

アニメーションが再生される際に音を鳴らす

例えば「アニメーションが再生される際に音を鳴らす」場合は、以下のようなスクリプトを書きます。
public AudioClip _clip;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	
	SoundManager _manager = (SoundManage)GameObject.FindWithTag("GameManager").GetComponent<SoundManager>();
	_manager.PlayClip(_clip);
}

ここでは書きませんが、サウンドを管理するSoundManagerクラスを用意します。
このクラスに効果音を渡して、再生をしています。
OnStateEnter()は、アニメーションが再生される際に呼び出されるイベント関数です。

このように記載をすれば、直感的に色々な処理を記述できます。

詳しくはこちら。
Unity – マニュアル: State Machine Behaviour

Unity5 3Dゲーム開発講座 ユニティちゃんで作る本格アクションゲーム (Smart Game Developer)Unity5 3Dゲーム開発講座 ユニティちゃんで作る本格アクションゲーム (Smart Game Developer)
まつだす,BATA,㊥Maruchu,うにたじゃむお,栗坂こなべ,森理 麟,alwei

翔泳社
売り上げランキング : 6383

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...