テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Animationの機能と制御

先日、【第3回 渋谷Unity技術勉強会-Unity×Html/Unity 2D-】に参加してきた。

内容は【こちら】の記事がすごくわかりやすい。

色々と気になるところがあったので、調べるがてらメモ。

「FlasherがUnityで2Dアニメーションに挑戦してみた」のスライドは【こちら


■Animationのカーブ(変化率)の形

アニメーションは特定ポイントに向けてカーブしていくものだが、
下図みたいに極端に変化させることもできるらしい。

スクリーンショット 2012-03-30 20.49.00

タイムライン上のキーを選択して、右クリック→***Tangent→Constantを選択。

の所にLeftかRightかBothが入る。これで、どちらの方向のキーフレームに対応させるかを設定する。

スクリーンショット 2012-03-30 21.57.42


■タイムラインからメソッドを実行

Animationのタイムラインからもメソッドを実行できる。
うまく使えば、モーション中に当たり判定を発生させたり、銃を発射できたりする。

実行できるメソッドは、Animationを実行するオブジェクトに割り当てたスクリプトメソッド
しかも引数も使えるスグレモノ。

使い方は、こんな感じ。
1.イベントを登録:実行したいタイムラインの上のほうを右クリック→Add Animation Event
2.メソッドを選択

スクリーンショット 2012-03-30 22.10.43  スクリーンショット 2012-03-30 22.08.42


■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";
}
}

フォローボタン