オブジェクトを動かすためにはいろいろと計算してスクリプトを書いていかなければなりませんが、簡単な動作であればAsset StoreにあるiTweenを使えば簡単に作ることが出来ます。今回はiTweenの使い方について書いていこうと思います。ちなみにiTweenは無料で使用できます。
iTweenをインストールする
Asset Storeのページからインポートするだけで使うことが出来ます。特に必要な設定等もありません。Unity5でインポートする場合、インポートするときにこのようなダイアログが出てきますが、「I Made a Backup,Go Ahead!」を選んでUnity5に最適化させます。
iTweenの使い方
iTweenを使ってGameObjectを動かすためには、移動や回転に対し、それぞれ対応したメソッドを使用して動かします。例えば、移動であればMoveToであったり、回転であればRotateToなどです。どのメソッドにも引数が2つあり、一つ目の引数には移動させるためのGameObjectを指定します。二つ目の引数にはこの指定したGameObjectをどのように動かしたいのかを記述するためのハッシュテーブルを渡します。ちなみに、移動と回転を同時に行いたい場合は、移動のアニメーションを記述した後に、そのまま回転のアニメーションを記述すれば同時に動作します。
移動させる
現在地から移動するにはiTween.MoveTo()を使用します。逆に、現在地まで指定の位置から移動させたい場合は、iTween.MoveFrom()を使用します。
例えば、3秒かけて現在地からワールド座標でX軸上にある3の位置に動くとした場合、このように書きます。
1 |
iTween.MoveTo (gameObject, iTween.Hash ("x", 3, "time", 3)); |
回転させる
こちらも、今の状態から変化させる場合と、指定した状態から今の状態へ変化させるメソッドがあります。それぞれRotateToとRorateFromが対応しています。
例として、ローカル座標でY軸を90度回転させます。
1 |
iTween.RotateTo (gameObject, iTween.Hash ("y", 90, "islocal", true)); |
ちなみにtimeを指定しない場合、デフォルトでは1秒で動作するようです。
拡大縮小させる
この場合も、ScaleToとScaleFromがあります。
1 |
iTween.ScaleTo (gameObject, iTween.Hash ("x", 5, "y", 3, "delay", 5f)); |
この例では、5秒後にX軸方向に5、Y軸方向に3の大きさに変化させてます。
ハッシュテーブルに使用できるプロパティ
プロパティ自体は様々なものがありますが、よく使用するものを列挙していこうと思います。
- ・秒数
- ・ディレイ
- ・ローカル座標を使用
- ・ループさせる
- ・イージング
だいたいこれらの組み合わせである程度の動きは表現することができます。
・秒数
これはキーに”time”を指定し、値にはアニメーション全体の秒数を記述します。
・ディレイ
これはキーに”delay”を指定し、アニメーションが始まるまでの秒数を記述します。
・ローカル座標を使用
ローカル座標で変化させたい場合、キーを”islocal”、値にtrueを設定することでローカル座標で変化するようになります。
・ループさせる
iTweenでループさせる場合は二通りのループがあり、一度アニメーションを行ったらもう一度はじめから行うものと、今行ったアニメーションを逆再生する方法があります。キーは両方共”looptype”を指定し、普通にループさせる場合はiTween.LoopeType.loopを、逆再生させる場合はiTween.LoopType.pingPongを設定するとそれぞれ逆再生が行われるようになります。
・イージング
iTweenのデフォルトでのイージングはeaseOutExpoが設定されているので、他のアニメーションを行いたい場合に設定します。キーは”easetype”です。値はiTween.EaseTypeから自分の行いたいアニメーションの値を設定します。それぞれがどんなアニメーションなのかはここでは割愛させて頂きます。
アニメーションのコールバックを受け取る
iTweenでは、アニメーション開始時、アニメーション中、アニメーション終了時にそれぞれコールバックを受け取ることが出来ます。ただし、受け取ることができるのは、アニメーションしているGameObjectでしか受け取ることが出来ません。そのため、コールバックを受け取るメソッドは、アニメーションしているGameObjectにアタッチされているスクリプトに記述されている必要があります。
・アニメーション開始時
メソッドを呼ぶためには、”onstart”キーに対し、”呼び出すメソッド名”を指定します。また、呼び出すメソッドに引数を渡したい場合、”onstartparams”キーに送りたい引数を指定すれば値を渡すことが出来ます。
・アニメーション中
キーは”onupdate”で、同じく”呼び出すメソッド名”を指定します。このアニメーション中にコールバックを返すようにした場合、アニメーションを開始してから終了するまで毎フレームコールバックが返ってきます。引数を渡したい場合は、”onupdateparams”に値を設定します。
・アニメーション終了時
キーは、”oncomplete”でこちらも他の2つと同じです。引数を渡す場合のキーは”oncompleteparams”です。
終わりに
今回は簡単にアニメーションを行ってくれるアセットのiTweenについての使い方を紹介しました。複雑なアニメーションであったり、アニメーション中に計算を行って逐一変化させるといったものでない限り、大体のアニメーションはこのiTweenで事足りてしまいます。このアセットを使えるだけで、Unityに対する敷居がかなり下がるのではないかと思います。
次回はScene上にあるGameObjectを見つける方法について書いていこうと思います。
では、また。