Unityのアニメーションを再生したい!
どうも、Linです。お茶、飲みまくってます。
Unityのゲームを作っていると、
「アニメーションを再生をしたいな!」
というときがあると思います。
アニメーションコントローラーを用いてアニメーションを再生するのが簡単でわかりやすいのですが、中には使用するアセットの都合上、
アニメーションコントローラーは使えない
という場合があるんです。
そのときに知っておきたいのが、
アニメーションだけでアニメーションを再生する
ということです。
何を言ってるのかよくわからなくなってきましたが、とりあえず、ぼくが購入した熊のアセットを元に、アニメーションを再生する方法をメモしておきたいと思います。
Unityのアニメーションを再生する方法
今回は例として、
クリックした熊が立つ
というゲームを作っていきます。
使用したUnityのアセットはこちらの「Bear 1」というものです。
それでは早速、熊のゲームを作っていきましょう。
Step1. ゲームオブジェクトを配置
今回は、熊のゲームオブジェクトをTerrainのど真ん中に配置。

ここからすべてが始まります。
熊をTerrainのど真ん中に持ってくるにはTransformを(250, 0, 250)に設定するといいですね。
Step2. Animationコンポーネント追加
熊にAnimationコンポーネントを追加します。
Bearのゲームオブジェクトを選択した状態で「Add Component」から「Animation」を選びましょう。
Step3. Animationを選択
続いて、再生したいアニメーションを選びます。
今回は、四つん這いの熊をクリックした時に立ち上がらせたかったので、
Arm_bear|idle_3
という熊が立つアニメーションを選びます。
AnimationコンポーネントのAnimationの横の時計みたいなマークをクリックして、アニメーション一覧から選んでみてください。
Step4. Play Automaticallyを外す
Play Automaticallyにチェックが入っていると、ゲーム開始時に自動的いアニメーションが再生されてしまいます。
今回はチェックを外しておきましょう。
Step4. コードを書く
あとはコードを書くだけ。名前を「bearController.sc」とでもしましょう。
やることは次の3つ。
- Animation型の変数を宣言
- 熊のAnimationコンポーネント取得
- Playメソッドで再生
次のようにコードを書いて、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class bearController : MonoBehaviour { Animation anim; // Use this for initialization void Start () { anim = this.gameObject.GetComponent<Animation> (); } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0)) { anim.Play (); } } } |
あとはこいつを熊にアタッチ。
これで熊が立つゲームの完成です!
複数のアニメーションを分けて再生したいときはどうするの??
場合によっては、複数のアニメーションを分けて再生したいというときがあると思います。
たとえば、
- Spaceキーを押したら、熊が寝る
- Enterキーを押したら、熊が攻撃する
みたいな感じですね。
その場合は、
Playメソッドの引数で、再生したいアニメーション名を指定しあげれば大丈夫です。
まずは、アニメーションコンポーネントのAnimationsからSizeを2に増やしてやって、Element0とElement1に再生したい2つのアニメーションを設定。
あとは、再生したいアニメーションをPlayメソッドの引数で指定します。
今回は、
- Arm_bear|sleep_start(眠り始めるアニメーション)
- Arm_bear|attack_4(攻撃するアニメーション)
を引数に設定。
スペースキーを押した時に眠り、Enterキーを押したら攻撃してくるようにします。
すると、bearController.scは次のようになるはず。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class bearController : MonoBehaviour { Animation anim; // Use this for initialization void Start () { anim = this.gameObject.GetComponent<Animation> (); } // Update is called once per frame void Update () { if (Input.GetKey (KeyCode.Space)) { anim.Play ("Arm_bear|sleep_start"); } else if (Input.GetKey (KeyCode.Return)) { anim.Play ("Arm_bear|attack_4"); } } } |
うまくいけば、次のように入力コマンドによって2つの熊のアニメーションが再生されるでしょう。
Unityのアニメーションを再生する方法はPlayメソッドで一発
以上が、Unityでアニメーションを再生する方法でしたね。
アニメーションコンポーネントを取得して、Playメソッドで再生するだけ。
複数のアニメーションを使いたいときはサイズを大きくして、Playメソッドの引数でアニメーション名を指定してあげましょう!
もっとUnityを深く学びたいという方には「オンラインブートキャンプ Unityコース」がおすすめです。
プロのメンターの方にわからないところを質問できますからね。
独学で挫折してしまった方はよかったら試してみてください。
それでは!
Lin

おそらく、ブロガー。現在ホテル暮らしで全国フラフラしています。
ネット広告代理店に1年3ヶ月勤め上げ、独立をして丸4年が経ちました。今年でフリーランス 5年目。
質問・ご意見・相談があればLINEで受け付けていますのでお気軽にどうぞ 。
質問です。
クマの次にネコを作るとして、ネコにもスリープとアタックのアニメーションを付けたい場合、同じソースコードで実装する方法はありませんでしょうか?
例えば、ネコとクマでフォルダ分けして、同じアニメーション名で別々のフォルダに保存するのが良いでしょうか?
よろしければご教授お願い致します。