您的位置:首页 > 其它

StateMachineBehaviour状态机行为

2016-01-17 22:21 218 查看
StateMachineBehaviour和MonoBehavior一样是一个特殊的类,Monobehavior挂在Gameobject下,而StateMachineBehaviour挂在状态控制器下,用于分割状态控制器行为。

using UnityEngine;

public class AttackBehaviour : StateMachineBehaviour
{
public GameObject particle;
public float radius;
public float power;

protected GameObject clone;

override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
clone = Instantiate(particle, animator.rootPosition, Quaternion.identity) as GameObject;
var rb = clone.GetComponent<Rigidbody>();
rb.AddExplosionForce(power, animator.rootPosition, radius, 3.0f);
}
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Destroy(clone);
}
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack Update ");
}
override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack Move ");
}
override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack IK ");
}
}


StateMachineBehaviour 的回调函数有: OnStateEnter, OnStateExit, OnStateIK, OnStateMove, OnStateUpdate.把这个脚本挂在状态控制器下,可以很清楚的知道状态控制器在执行什么状态 如图:



详细请查阅官方文档:http://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: