では、この
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度回転」というように「自分自身の向きを変える」というやり方であることがわかります。
Translateや
Rotateは、「自分から見た視点」で移動や回転を行うものなのです。