Animationの機能と制御
先日、【第3回 渋谷Unity技術勉強会-Unity×Html/Unity 2D-】に参加してきた。
内容は【こちら】の記事がすごくわかりやすい。
色々と気になるところがあったので、調べるがてらメモ。
「FlasherがUnityで2Dアニメーションに挑戦してみた」のスライドは【こちら】
■Animationのカーブ(変化率)の形
アニメーションは特定ポイントに向けてカーブしていくものだが、
下図みたいに極端に変化させることもできるらしい。
タイムライン上のキーを選択して、右クリック→***Tangent→Constantを選択。
の所にLeftかRightかBothが入る。これで、どちらの方向のキーフレームに対応させるかを設定する。
■タイムラインからメソッドを実行
Animationのタイムラインからもメソッドを実行できる。
うまく使えば、モーション中に当たり判定を発生させたり、銃を発射できたりする。
実行できるメソッドは、Animationを実行するオブジェクトに割り当てたスクリプトのメソッド。
しかも引数も使えるスグレモノ。
使い方は、こんな感じ。
1.イベントを登録:実行したいタイムラインの上のほうを右クリック→Add Animation Event
2.メソッドを選択
■Animationの終了を検知する
Animationの終了時にメソッドを登録する方法。
Animationにイベント登録すれば済む話かもしれないけど、スクリプトでも管理したかったり、
そういった事をするための方法。
まあ一番簡単な方法はUpdate時に毎回確認することだけど、もう少しスマートにやりたい人向け。
実際のデモはこちら 【デモ】
using UnityEngine;
using System.Collections;public class AnimationTest : MonoBehaviour {
public GameObject cube;
public TextMesh text;
void OnGUI()
{
if(UnityEngine.GUI.Button(new Rect(10,10,50,20), "push"))
{
cube.animation.Play("CubeAnimation");
StartCoroutine(AnimationCheck());
}
}
IEnumerator AnimationCheck()
{
text.text = "Play Animation";
while(cube.animation.isPlaying){
yield return null;
}
text.text = "End Animation";
}
}