おもちゃラボ

Unityで遊びを作ってます

クリックしたオブジェクトをアニメーションさせる

オブジェクトがクリックされたときに、アニメーションを付ける簡単な方法を紹介します。実行結果は↓のような感じになります。

f:id:nn_hokuson:20160807224317g:plain

クリックされたことを検知する

まずはタッチを検出したいオブジェクトにコライダをアタッチします。オブジェクトをシーンビューに配置して、インスペクタのAdd Componentから「Collider 2D」→「Circle Collider 2D」を選択します。

f:id:nn_hokuson:20160808200817p:plain

オブジェクトがクリックされたかどうかは、OnMouseDown関数を使って調べることが出来ます。プロジェクトビューから「右クリック」→「Create」→「C# Script」で FootControllerを作成します。ファイルに次のスクリプトを入力して下さい。

using UnityEngine;
using System.Collections;

public class FootController : MonoBehaviour {
	void OnMouseDown() {
		Debug.Log("Touch");
	}
}

保存できたら、スクリプトをアタッチします。プロジェクトビューからヒエラルキービューのfootprintにドラッグ&ドロップして下さい。

f:id:nn_hokuson:20160808201239p:plain

iTweenを使って動かす

タッチされたときに、足あとのスプライトがアニメーションするようにします。スクリプトを使ってスケールを操作することでもアニメーション出来ますが、ここではiTweenというアセットを使って楽にアニメーションをつけてみましょう。

下記のサイトからiTweenをダウンロードしてインポートして下さい。

f:id:nn_hokuson:20160808195340p:plain
https://www.assetstore.unity3d.com/jp/#!/content/84

FootControllerスクリプトのOnMouseDown関数をを次のように修正します。

using UnityEngine;
using System.Collections;

public class FootController : MonoBehaviour {
	void OnMouseDown() {
		iTween.PunchScale (this.gameObject, iTween.Hash (
			"x", 0.3f,
			"y", 0.3f,
			"time", 0.5
		));	
	}
}

ここではiTweenのPunchScale関数を使っています。この関数はスプライトを拡大してから、バネ運動によって元の大きさに戻す関数です。実行してみて正しく動くことを確認してみましょう。

正しく動くことが確認できたら、footPrintのPrefabを作ってたくさん並べてみましょう。数が増えてもちゃんと正しくタッチ判定できていることを確認して下さい。

f:id:nn_hokuson:20160808202233p:plain