アニメーションの遷移
今回はアニメーションの遷移について。
久しぶりにやろうと思ったらちょっと忘れてたのでちゃんと残しておこうと思いました…
ものっすごい適当にWindowsにデフォで備わってるペイントで絵を描いてアニメーションを作ってみました。
アタックを押すと攻撃のモーション、ストップのボタンを押すと攻撃のアニメーションをやめて待機中のアニメーションに戻るという動きを行っています。
これがAnimatorの動きでStopanimからアタックボタンを押すとAttackanimに移動し、ストップボタンを押すとanimrestartに遷移しStopanimに遷移します。
アニメーション遷移する条件を作ろう
今回はBoolを使ってattackという名前で作成しました。
条件としてはattackがtrueならAttackanimに遷移、attackがfalseならAttackanimからanimrestartに遷移するように設定していきます。
すでにアニメーションは3つ作成してあるのですが、Animatorを見てみると矢印がつながっています。右クリックをしてMake Transitionをクリックすると作成が可能です。
作成したTransitionをクリックすると右側にあるInspectorが表示されます。
下にConditionsとあるので+をクリックし、プルダウンからattackを選択し、条件をtrueに設定すると
attackがtrueなら遷移するという条件に設定されます。
AttackanimからanimrestartまでMake TransitionでTransitionを作成しInspectorからattackの条件をfalseに設定し、animrestartからStopanimには条件を付けずにTransitionを繋げます。
Transitionの設定はこれで終わりです。
アニメーション遷移のスクリプトを書いてみる
アニメーションの遷移だけならスクリプトはすごく簡単です。Humanという名前で作成してます。
using UnityEngine;
using System.Collections;
public class Human : MonoBehaviour {
public Animator animator;
// Use this for initialization
void Start () {
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
}
//アタックボタン
public void AttackButton(){
animator.SetBool ("attack", true);
}
//ストップボタン
public void StopButton(){
animator.SetBool ("attack", false);
}
}
このスクリプトをアニメーションを作ったgameObjectに突っ込んで下さい。
そしてアタックボタンとストップボタンを作成します。
Button(Script)を追加し、OnClick()のところに+ボタンがあるので+で追加し、先ほどスクリプトを追加したHumanオブジェクトをRuntime Onlyの下のところに追加し右側のプルダウンからAttackButtonを選択します。
こうする事でボタンをクリックするとHumanオブジェクトのHumanスクリプトの中のAttackButtonを実行します。
同じようにStopButtonを作成すると完成です。
animrestartはなくてもいいかも…そして絵のクオリティがとても残念です(´・ω・`)