Unity で Tween を行う時に便利な Asset 、 iTween の使い方。
iTween for Unity by Bob Berkebile (pixelplacement)
http://itween.pixelplacement.com/index.php
MoveBy
MoveBy メソッドは相対的な移動を行います。
x座標を +2 した位置までこのスクリプトが追加された GameObject を移動させる場合は( C# の場合)この様なプログラムになります。
using UnityEngine; using System.Collections; public class MoveSample : MonoBehaviour { void Start(){ iTween.MoveBy(gameObject, iTween.Hash("x", 2, "easeType", "easeInOutExpo", "loopType", "pingPong", "delay", .1)); } }
JavaScript の場合はこの様な記述になります。ハッシュの記述が異なるだけでそれ以外の部分については同じ書き方となります。ここでは C# の記述例を書いていくので JavaScript の人はハッシュの記述部分だけ、置き換えて下さい。
#pragma strict function Start () { iTween.MoveBy(gameObject, {"x":2, "easeType":"easeInOutExpo", "loopType":"pingPong", "delay":.1}); }
ちなみに「BCE0005: Unknown identifier: 'iTween'.」なんてエラーが出た時は iTween フォルダの中に有る Plugins フォルダを Assets フォルダのルートに移動させて下さい。
この例の様に iTween では iTween.Hash を使ってハッシュ値でパラメータを指定します。
今回の場合は以下の様な指定を行っています。
"x", 2 → x座標を相対値で2(つまり現在の位置から +2 )の位置へ "easeType", "easeInOutExpo" → イージング(動きに表情を付ける)処理の指定 "loopType", "pingPong" → ループパターンの指定 "delay", .1 → アニメーションを開始するまでの待ち時間。この場合は0.1秒経ってからアニメーションが開始されます
easeType で使用可能な値はこちらを参照。
loopType は none、 loop 、 pingPong のいずれかを指定可能です。
none はループしない、 loop はループする、 pingPong は一度アニメーションが行われた後に逆再生が行われる様な動作が行われます。例えば右 +3 に移動する Tween の場合にはそのアニメーションが終わった後に左に +3 (右に -3)移動するアニメーションが開始されます。 2倍 に拡大する Tween の時に pingPong を指定すると2倍に拡大された後に元のサイズに戻るアニメーションが行われます。
MoveBy の代わりに MoveTo を使うと絶対値としての指定になります。どの様な位置に居ても指定の位置まで移動します。
MoveAdd
MoveAdd メソッドは移動処理の追加を行えます。
■x座標を +2 した位置へ移動をしながら同時にz座標を +2 した位置へ移動を行う
iTween.MoveBy(gameObject, iTween.Hash("x", 2, "easeType", "easeInOutExpo", "loopType", "pingPong", "delay", .1)); iTween.MoveAdd(gameObject, iTween.Hash("z", 2, "easeType", "easeInOutExpo", "loopType", "pingPong", "delay", .1));
MoveFrom
MoveFrom メソッドは指定の位置から現在の位置まで移動します。
■スタート時にx座標を +2 した場所に移動した後、現在の位置まで移動
iTween.MoveFrom(gameObject, iTween.Hash("x", 2, "easeType", "easeInOutExpo", "loopType", "pingPong", "delay", .1));
MoveUpdate
毎フレーム指定の位置に近づく。 Update() の中などの繰り返し呼ばれる場所で使用し、常に指定の位置に追随する様なプログラムを作りたい時に便利に使えます。
iTween.MoveUpdate(gameObject,iTween.Hash("position",targetPos,"time",.5));
time の値が大きいほど、指定の position に到達するまで時間がかかる様にます。