強火で進め

このブログではプログラム関連の記事を中心に書いてます。

キャラクターのアニメーション処理

キャラクターに設定してあるアニメーションを実行する方法を解説します。

今回はキャラクターとアニメーションデータは付属のものを使います。

プロジェクトを作成し、Projectのビューで右クリックをし、「Character Controller」をImportします。

※もちろん、プロジェクト作成時に「Character Controller.unityPackage」にチェックを付けて追加してもおいても良いです。

First Person Controllerについては必要無いのでチェックを外してから「Import」ボタンを押します。

3rd Person ControllerにはデフォルトでScriptファイルが幾つかついていますので全てRemoveします。

次に「Animation」の項目の「Play Automatically」のチェックを外します。

3rd Person ControllerをSceneビューに追加後、カメラの位置調整やライトの追加を行います。

キャラクターのPositionとRotationはこの様に設定にします。

さて、事前準備はここで完了です。メインのアニメーション処理に取り掛かります。

ボタンを押したらアニメーションをする様にしたいので以下の記述をしたJavaScriptを用意し、空のGameObjectを作成(メニューから「GameObject」-「Create Empty」)し、そこにJavaScriptをドラッグします。
【GUIScript.js】

var Charcter : GameObject;

function Start () {
	Charcter = GameObject.Find("3rd Person Controller");
}

function OnGUI () {
	GUILayout.BeginArea (Rect (0, Screen.height-105, Screen.width, 105));
	if(GUI.Button (Rect (5, 0, 100, 100), "idle")) {
		Charcter.animation.Play("idle");
	} 
	if(GUI.Button (Rect (5+105, 0, 100, 100), "walk")) {
		Charcter.animation.Play("walk");
	} 
	if(GUI.Button (Rect (5+105*2, 0, 100, 100), "jump_pose")) {
		Charcter.animation.Play("jump_pose");
	} 
	if(GUI.Button (Rect (5+105*3, 0, 100, 100), "run")) {
		Charcter.animation.Play("run");
	} 
	GUILayout.EndArea (); 
}

アニメーションの名前についてはここで確認しました。

実行するとこの様な画面に成ります。

それぞれのボタンを押すと該当するアニメーションが実行されます。

jumpだけは繰り返しアニメでは無く、1回しかアニメーションしない様です。
確認してみるとjumpだけは「WrapMode」がDefaultに成っているみたいです。

Unity Script Reference – Animation.wrapMode
http://unity3d.com/support/documentation/ScriptReference/Animation-wrapMode.html

今回のサンプルはこちらで試せます。ソースファイルはこちら