2012年5月25日金曜日

Unity: iTweenを使ってパス移動する方法

Unitien(造語)に、iTweenは必須ですね!?

GameObjectを決められたパスに沿って移動させることができる、iTweenという便利なアセットがあります。
今回はランダムに生成したモーションパスに沿って、GameObjectを移動させてみました。

ステージ準備

まず、以下のようなステージを用意します。
手前の球体と、奥のキューブには、Rigidbodyコンポーネントを付けてあります。

stage.jpg

スクリプト解説

球体には、iTweenで動かすスクリプトを追加します。
// 球体に付加するスクリプト
using UnityEngine;
using System.Collections;

public class ScriptBall : MonoBehaviour {
    void Start () {
        Vector3[] movepath = new Vector3[5];
        for (int i=0 ; i<4 ; ++i) {
            movepath[i].Set(Random.Range(-20.0f,20.0f),Random.Range(0.0f,10.0f),Random.Range(0.0f,30.0f));
        }
        movepath[4].Set(-1.0f,-4.1f,34.0f);
        
        iTween.MoveTo(gameObject,iTween.Hash("path",movepath,"time",4,"easetype",iTween.EaseType.easeOutSine));
    }
}

Start()関数で、Vector3型の配列を作ります。
今回は5座標を通るモーションパスを作るので、配列の要素数を5にします。

最初の4座標まではランダムで生成し、最後の座標(目的地)にはキューブがある座標をダイレクトに入れています。

モーションパスを作成したら、iTween.MoveTo()関数で球体の移動を指示します。
MoveToには、以下の2つの関数があり、今回は2番目のハッシュテーブルを渡す関数を使用します。
MoveTo(GameObject target, Vector3 position, float time)
MoveTo(GameObject target, Hashtable args)
ハッシュテーブルには「プロパティ名」と「値」をセットとして登録していきます。

今回は以下のように設定しました。
  • pathプロパティ : movepath配列
  • timeプロパティ : 4秒
  • easetypeプロパティ(Easeタイプ。加速、減速など) : Out Sineパターン

なお、最初のtarget引数には、動かすオブジェクトを指定します。
gameObject変数は、スクリプトが付加されたGameObjectの参照となりますので、これは球体自身を意味することとなります。

スクリプトを球体に付加したら、さっそく実行してみましょう!

実行結果



関連記事


0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...