おもちゃラボ

Unityで遊びを作ってます

【Unity】ユニティちゃんをMechanimでジャンプさせる

 ユニティちゃんには様々な歩行やジャンプアニメーションなど、さまざまなアニメーションが用意されているので、これらを組み合わせることで簡単にユニティちゃんを動かすことが出来ます。ここでは画面をクリックしたときにMechanimでユニティちゃんをジャンプさせる方法を紹介します。

ユニティちゃんを配置する

 まずはユニティちゃんを画面上に配置しましょう。UnityChan/Modelsフォルダの中にある「unitychan」をシーンビューにドラッグ&ドロップして下さい。

f:id:nn_hokuson:20160710090923p:plain

このままではユニティちゃんが直立不動のTポーズのままですね。ジャンプアニメーションの前に、まずは何もしていないときのアニメーション(idleアニメーション)をMechanimでつけていきます。

Mechanimでアイドルアニメーションを設定する

ユニティちゃんにMechanimを使ってアニメーションをつけるために、まずは「Animator Controller」を作成します。このAnimator Controller内でアニメーションを組み立てていきます。

プロジェクトビューで右クリックして「Create」→「Animator Controller」を選択して「UnitychanController」という名前で保存しましょう。できたらダブルクリックして開いて下さい。

f:id:nn_hokuson:20160710091558p:plain

つぎにアイドル状態のステートを作成します。アニメータビューで右クリックして「Create State」→「Empty」を選択して下さい。

f:id:nn_hokuson:20160710091932p:plain

新しいステートが追加されるので、インスペクタから名前の欄を「Idle」に変更します。「Motion」の項目の右側の丸ポチをクリックし「WAIT00」を指定します。画面左側に表示されているウインドウから、Unityちゃんに用意されているアニメーションを一覧できます。

f:id:nn_hokuson:20160710092415p:plain

最後にシーンビューに戻り、今作成した「UnitychanController」をユニティちゃんにセットします。ヒエラルキービューから「unitychan」を選択し、インスペクタの「Animator」→「Controller」に「UnitychanController」をドラッグします。

f:id:nn_hokuson:20160710092935p:plain

これで「Idleステート」にいる間は「WAIT00アニメーション」が表示されるようになりました。T字ポーズではなくなっていますね!

f:id:nn_hokuson:20160710093447p:plain

アイドルアニメができたので、次はいよいよジャンプアニメを作ります。クリックしたときにジャンプするようにMechanimで設定していきましょう。

Mechanimを使ってクリックでジャンプさせる

次にジャンプのためのステートを作成して、ステート間を行き来できるように、ステートマシンを作成していきます。ステートマシンの作り方については「Unity5の教科書」でも説明していますので、あわせてご覧ください。

アイドルアニメの時と同じように、アニメータビューで右クリックして「Create State」→「Empty」を選択します。作成したステート名を「Jump」に変更、「Motion」の項目には「JUMP00」を指定します。

f:id:nn_hokuson:20160710094129p:plain

このままでは「Idle」と「Jump」は独立しているため、永遠にジャンプアニメーションに遷移できません。そこで、ジャンプスアニメへの遷移経路を作ります。

「Idel」の上で右クリックして「Make Transition」を選択し、マウスを移動して「Jump」の上でもう一度クリックします。

f:id:nn_hokuson:20160710094431p:plain

これで「Idle」から「Jump」に遷移できるようになりました。

これと同様に「Jump」から「Idle」に遷移できるようにします。「Jumpト」の上で右クリックして「Make Transition」を選択、「Idle」の上でクリックします。

f:id:nn_hokuson:20160710094711p:plain

これで、アイドル状態とジャンプ状態のアニメーションを行き来できるようになりました。最後に、どういう条件でステート間を遷移するかを指定します。

アニメータビューの「Parameterタグ」を選択し、「+ボタン」を押します。メニューから「Trigger」を選択し、作成されたTrigger名を「jumpTrigger」に変更します。

f:id:nn_hokuson:20160710095354p:plain

いま作成したTriggerを遷移条件として設定します。「Idle」から「Jump」に向かう矢印を選択し、インスペクタの「Conditions」の「+ボタン」をクリックすると、「JumpTrigger」が自動的にセットされます。

また、「Has Exit Time」のチェックボックスは外しておきましょう。「Has Exit Time」にチェックが入っているとIdelアニメーションが終わったタイミングでしか、ジャンプしなくなります。

f:id:nn_hokuson:20160710100620p:plain

ここまでで、Mechanimを使ったジャンプアニメの設定は終了です。

スクリプトからAnimator Controllerの値を制御する

スクリプトからAnimator Controller内にある「JumpTrigger」をオンにして、「Idle」から「Jump」へ遷移するようにします。

プロジェクトビューで右クリックし、「Create」→「C# Script」を選択し、ファイル名を「UnitychanController」に変更します。作成したファイルに次のスクリプトを入力して下さい。

using UnityEngine;
using System.Collections;

public class UnitychanController : MonoBehaviour {
	void Update () {
		if (Input.GetMouseButtonDown (0)) {
			GetComponent<Animator> ().SetTrigger ("jumpTrigger");
		}
	}
}

ここでは、ユニティちゃんにアタッチされたAnimatorコンポーネントを取得し、SetTrigger関数で指定した名前のトリガーをオンにしています。これにより、クリックしたときにユニティちゃんがジャンプするようになります。

このスクリプトをヒエラルキービューのunitychanにドラッグ&ドロップしてアタッチします。

f:id:nn_hokuson:20160710101311p:plain

ゲームを実行して、画面をクリックするとユニティちゃんがジャンプすることを確認してみましょう。

f:id:nn_hokuson:20160710101629g:plain

まとめ

Mechanimを使ってユニティちゃんをジャンプさせてみました。その他のアニメーションについては参考書などにもかいてあるので参考にしてみてくださいね〜。