デジタルフロッグ

Unityのアプリの開発をしながらいろいろと忘れないための備忘録でございます。

アニメーションの遷移

今回はアニメーションの遷移について。

久しぶりにやろうと思ったらちょっと忘れてたのでちゃんと残しておこうと思いました…

f:id:karaagedigital:20160827075031g:plain

ものっすごい適当にWindowsにデフォで備わってるペイントで絵を描いてアニメーションを作ってみました。

アタックを押すと攻撃のモーション、ストップのボタンを押すと攻撃のアニメーションをやめて待機中のアニメーションに戻るという動きを行っています。

f:id:karaagedigital:20160827075222g:plain

これがAnimatorの動きでStopanimからアタックボタンを押すとAttackanimに移動し、ストップボタンを押すとanimrestartに遷移しStopanimに遷移します。

 

アニメーション遷移する条件を作ろう

今回はBoolを使ってattackという名前で作成しました。

f:id:karaagedigital:20160827075817p:plain

条件としてはattackがtrueならAttackanimに遷移、attackがfalseならAttackanimからanimrestartに遷移するように設定していきます。

f:id:karaagedigital:20160827080810p:plain

 

すでにアニメーションは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に突っ込んで下さい。

f:id:karaagedigital:20160827081823p:plain

そしてアタックボタンとストップボタンを作成します。

f:id:karaagedigital:20160827082014p:plain

Button(Script)を追加し、OnClick()のところに+ボタンがあるので+で追加し、先ほどスクリプトを追加したHumanオブジェクトをRuntime Onlyの下のところに追加し右側のプルダウンからAttackButtonを選択します。

こうする事でボタンをクリックするとHumanオブジェクトのHumanスクリプトの中のAttackButtonを実行します。

同じようにStopButtonを作成すると完成です。

f:id:karaagedigital:20160827075031g:plain

animrestartはなくてもいいかも…そして絵のクオリティがとても残念です(´・ω・`)