#TriggerとBoolの使い分け
Boolは条件がtrueならずっと続けるのでオンオフを切り替えるスイッチみたいなイメージです。
例えばButtonを押している間はアニメーション、とかやるならこっちのが使いやすいと思います。
Triggerはその名の通り、銃のトリガーみたいなものをイメージするとわかりやすいです。
バンッ!と1回発火したら終わりです。
今回やりたいことは「Buttonを押したら1回アニメーションを再生する」なので、Triggerのほうが扱いやすいです。
#アニメーション設定
Cube(アニメーションもこいつがする)と、Buttonを使った前提で考えていきます。
- Cubeにアニメーションを作成します。この辺は割愛します。
- Animatorで遷移条件を設定します。
[Animator]を開き、右クリックして[Create State]から[Empty]を作成します。
作成した[New State]を右クリックして[Set as Layer Default State]をクリックします。
これでこのObjectの開始時のアニメは空っぽになるので、最初は何も再生されません。
3. [New State]を右クリックから[Make Transition]をクリックして1で作成したアニメにつなげます。
同様に、1で作成したアニメから[New State]へもトランジションをつなげておきます。
4. [Parameters]から[+]をクリックして[Trigger]を追加。
5. [New State]から1で作成したアニメに伸びているトランジションをクリックし、インスペクターの[Conditions]から4で作成したTrigger名を選択
#スクリプト設定
あとはSetTriggerで呼び出すだけです。
下記スクリプトをCubeにアタッチ。
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class test : MonoBehaviour
6{
7 public void PlayAnime() {
8 GetComponent<Animator>().SetTrigger("test"); // Trigger名 test
9 }
10}
11
Button側は、CubeをアタッチしてPlayAnime()
を呼びます。
実行してButtonを押してみると1回アニメーションが再生されると停止します。もう一度Buttonを押せばまたアニメーションが実行されます。