ここではゲームオブジェクトの座標や回転の設定方法についてもう少し詳しく説明します。


1. 左手系によるゲームオブジェクトの座標の設定

CG で使われる座標系は右手系と左手系がありますが、Unity は図 1 に示している左手系の方を使っています。


図1. 左手系の座標系

図1の各矢印が x、y、z 軸の方向を表し、それぞれ

に対応しています。
なお各軸の矢印の方向(=左手の各指が向いている方向)がプラス側の方向になります。

さてプロジェクトを新規作成した直後の状態ではゲームビューの横方向が x 軸、縦方向が y 軸、奥行きが z 軸となっていますので、例えばあるゲームオブジェクトの Position の x 値を増やすとそのゲームオブジェクトの x 座標値が大きくなりますので右方向に移動します。
逆に x 値を減らすと左方向にゲームオブジェクトが移動します。
y、z軸方向も同じ様に動きます。

では実際に HAKO を使って座標移動を確認してみましょう。

ヒエラルキーで HAKO をクリックして インスペクターに情報を表示する。
インスペクターの Transform の Position の x の値を増やしたり減らしたりして理論通りに移動することを確かめる。
同様に Position の y の値を増やしたり減らしたりして理論通りに移動することを確かめる。
同様に Position の z の値を増やしたり減らしたりして理論通りに移動することを確かめる。
確認が終わったら (x,y,z) の値を (1,2,0) に戻す。


2. 左ネジの法則によるゲームオブジェクトの回転

Unity は「左ねじの法則(または左手の法則)」と呼ばれる規則に従ってゲームオブジェクトの回転を行います(図2)。


図2. 左ねじの法則(左手の法則)

各回転軸の矢印の方向に向かって左ねじを締める向き、つまり半時計回りがプラス回転になります。

なおオブジェクトの座標指定の時は x、y、z 座標の値をセットする順番は自由でしたが、回転の場合は角度をセットする順番によってオブジェクトの向きが変わります。
Unity の場合は

z 軸 → x 軸 → y 軸

の順番に値がセット(回転)されます。

では実際に HAKO を使って回転を確認してみましょう。

ヒエラルキーで HAKO をクリックし、Transform の rotation の (x,y,z) の値をそれぞれ (0,0,0) にリセットする。
まず rotation の z の値を増やしたり減らしたりして理論通りに z 軸回りで回転することを確かめる。
次は rotation の x の値を増やしたり減らしたりして理論通りに x 軸回りで回転することを確かめる。
最後に rotation の y の値を増やしたり減らしたりして理論通りに y 軸回りで回転することを確かめる。
確認が終わったら HAKO の Transform の rotation の (x,y,z) の値を (45,45,0) に戻す。


3. ジンバルロックに注意する

回転の練習をしていて気が付いたかもしれませんが、x 軸の角度を 90 度、または -90 度にすると y 軸と z 軸の値を変えても同じ様な回転しかしなくなります。
この現象のことを「ジンバルロック」と言います。

具体的にはヨー回転が出来なくなってロール回転しか出来なくなります(飛行機で言うと一旦垂直上昇か垂直落下状態になると姿勢制御出来なくなるという状況です)。

ジンバルロックを防ぐためにはクォータニオンというテクニックを使って回転軸を指定する必要があるのですが、これについては後のページで説明します。

では実際に HAKO を使ってジンバルロックを確認してみましょう。

ヒエラルキーで HAKO をクリックして インスペクターに情報を表示する。
インスペクターの Transform の rotation の (x,y,z) の値をそれぞれ (90,0,0) にする。
rotation の y, z の値を増やしたり減らしたりしても同じ方向(ロール回転)にしか回転しないことを確認する。
確認が終わったら (x,y,z) の値を (45,45,0) に戻す。