2015年5月18日月曜日

Unity5でのアニメーション

Unity5にアップデートされてAnimatorが新しくなりました
今回はAnimatorをさわってみようと思います


やりたいこと
 ・Stayを起点としてFireAttack , TailAttackをランダムに実行させる


①3種類のアニメーションを用意

②ParametersにisFireAttackとisTailAttackをTrigger型で追加

③StayからFireAttackへ伸びる矢印を選択しInspectorのConditionsにisFireballAttackを追加
    ※FireAttackからStayへ伸びる矢印には追加しません

④StayからTailAttackへ伸びる矢印を選択しInspectorのConditionsにisTailAttackを追加
    ※TailAttackからStayへ伸びる矢印には追加しません

⑤csファイルを作り下記スクリプトをコピペ

using UnityEngine;
using System.Collections;

public class DragonMotionManagement : StateMachineBehaviour
{

public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
//新しいステートに移り変わった時に実行
int MotionNumber = 0;
MotionNumber = Random.Range (0, 2);
if (MotionNumber == 0) {
animator.SetTrigger ("isFireAttack");
}
if (MotionNumber == 1) {
animator.SetTrigger ("isTailAttack");
}
}
}

⑥矢印周辺の何もないところをクリックしてInspectorに⑤で作ったcsファイルを追加

⑦実行確認


これでStayを起点としてFireAttack , TrailAttackがランダムに実行されます
Unity4のときはモーションの終わりを取るのが面倒でしたがとても簡単になりました
他にも実行するタイミングを設定できるので下記参考サイトを見てやってみて下さい


参考サイト
 http://japan.unity3d.com/blog/?p=1672
 http://riberunn50.blog.fc2.com/blog-entry-25.html
 http://qiita.com/toRisouP/items/b6540b7f514d18b9a426