libro
www.tuyano.com
JavaScriptではじめるUnityプログラミング入門

ゲームオブジェクトを移動しよう! (2/5)

作成:2014-04-19 11:35
更新:2014-04-19 11:35

■Transformオブジェクトについて

では、このtransform~っていうのは何か? これが今回の最大のポイントです。このtransformというのは、「Tansform」オブジェクトが保管されているGameObjectのプロパティなのです。

Transformというのは、その名の通り、トランスフォーム関係(位置や傾き、大きさなど)の情報や操作を行うための機能をひとまとめに管理するオブジェクトです。位置の移動、回転、拡大縮小など、トランスフォーム関係の操作は、このTransformオブジェクトにまとめられています。ここで使った「Rotate」も、そうしたメソッドの1つだった、というわけです。では、移動や回転のメソッドをここで整理しておきましょう。

●指定の距離だけ移動する
transform.Translate( X軸 , Y軸 , Z軸 );

●指定の角度だけ回転する
transform.Rotate( X軸 , Y軸 , Z軸 );
Translateは、シーンの座標に基づいた移動距離を指定します。Rotateは1回転=360で換算した回転角度を指定します。

とりあえずこの2つのメソッドだけでも覚えておけば、ゲームオブジェクトを動かしたり回転したりできるようになります。では、前回のサンプルを少し書き換えてみましょう(下リスト)。これを実行すると、スクリプトを組み込んだCubeがくるくると円軌道を描いて回転します。


■相対移動に注意?

ここではUpdateで、Y軸にちょっとだけ回転し、X軸にちょっとだけ移動しています。こうすることで、「ちょっとずつ向きを変えながら進む」ということを繰り返し、円軌道で移動することになるわけです。

ということは、Translateによる移動は、シーンの絶対座標ではなく、このゲームオブジェクト自身から見た相対的な移動であることがわかります。わかりやすくいえば、「東に一歩」とか「北に1メートル」とかいった移動ではなくて、「右に一歩」「前に1メートル」といった移動の仕方をしているのですね。

Rotateの回転も、シーンの絶対座標ではなく、「前に10度回転」とか「左回りに30度回転」というように「自分自身の向きを変える」というやり方であることがわかります。TranslateRotateは、「自分から見た視点」で移動や回転を行うものなのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function Update () {
    transform.Rotate(0, -1.0, 0);
    transform.Translate(0.1, 0, 0);
}
※関連コンテンツ

「JavaScriptではじめるUnityプログラミング入門」に戻る