Developer

【初心者Unity】オブジェクトの向き(ベクトル)の取得
2021.03.31
Lv1

【初心者Unity】オブジェクトの向き(ベクトル)の取得

1.原点を基準とした向き


原点を基準とした向きを取得したい場合は、Vector3を使用します。
Vector3はその名の通りベクトルです。
x軸、y軸、z軸の3つの要素を持つUnity独自の型であり、

float x = (任意の数字);
float y = (任意の数字);
float z = (任意の数字);
Vector3 vector = new Vector3(x, y, z);

のように、3つの数字をコンストラクタに与えて使用することが多いでしょう。
ですが、いくつかの単位ベクトルに関してはStatic変数として用意されていますので、それらを紹介していこうと思います。
シーンビュー右上に表示されているZ軸を正面、x軸を右、y軸を上として表現されます。

// 正面 Vector3(0, 0, 1)
Vector3 forward = Vector3.forward;
// 後ろ Vector3(0, 0, -1)
Vector3 back = Vector3.back;
// 右 Vector3(1, 0, 0)
Vector3 right = Vector3.right;
// 左 Vector3(-1, 0, 0)
Vector3 left = Vector3.left;
// 上 Vector3(0, 1, 0)
Vector3 up = Vector3.up;
// 下 Vector3(0, -1, 0)
Vector3 down = Vector3.down;

これらの値は、どのゲームオブジェクトにアタッチしたスクリプト内でも同一(固定)となります。

2.自身を基準とした向き


ゲームオブジェクトごとの向きを取得する場合は、Vector3ではなくtransformを使用します。
これは、例えばゲーム内のキャラクターが身体を向けている方向に歩を進める等の動きを実現します。
Vector3が大文字始まりであるのに対して、transformは小文字始まりであることに注意してください。
ゲームオブジェクトを選択した際に表れるZ軸(青色の矢印)を正面、x軸(赤色の矢印)を右、y軸(緑色の矢印)を上として表現します。

// 正面
Vector3 forward = transform.forward;
// 後ろ
Vector3 back = -transform.forward;
// 右
Vector3 right = transform.right;
// 左
Vector3 left = -transform.right;
// 上
Vector3 up = transform.up;
// 下
Vector3 down = -transform.up;

vector3とは異なり、back、down、leftが用意されておりません。
そのため、それぞれforward、right、upに負の符号を付け、表現しています。

これらの値は、ゲームオブジェクトがそのときどちらを向いているかによって異なってきます。

 
 

連載目次リンク

「初心者のための」Unityゲーム制作 目次
 

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次