GameObjectを決められたパスに沿って移動させることができる、iTweenという便利なアセットがあります。
今回はランダムに生成したモーションパスに沿って、GameObjectを移動させてみました。
ステージ準備
まず、以下のようなステージを用意します。手前の球体と、奥のキューブには、Rigidbodyコンポーネントを付けてあります。
スクリプト解説
球体には、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の参照となりますので、これは球体自身を意味することとなります。
スクリプトを球体に付加したら、さっそく実行してみましょう!
実行結果
関連記事
- Unity: 指定エリアの中にあるGameObjectを探る方法
- Unity: iTween Visual Editorで楽々モーションパス制作
- Unity: これはよさそう! Unityアセット9選
- Unity: Random.Range()の範囲がfloatとintで違う
- Unity: GameObjectの非表示2つの方法と削除
0 件のコメント:
コメントを投稿