概要
C++ の vector は数学でならったベクター(ベクトル)ではなく動的配列だったが、Unity の Vector3 は数学のベクターと同じものだ。
x, y, z の3成分を持ち、3次元位置を表すことや、長さを持った方向を表すことができる。
Vector3 には スタティック変数、メンバ変数、スタティック関数、メンバ関数が豊富に用意されていて、 絶対値や、2つのベクターの角度、ベクターどおしの内積や外積などを簡単に計算することができる。
ゲームオブジェクトは Transform コンポーネントを持ち、それが Vector3 型の position メンバを持っている。
これを参照することで、オブジェクトの位置を調べたり、値を設定するこでオブジェクトの位置を変更したりできる。
この操作は頻繁に行なうものなので、Vector3 をマスターし、その処理をスマートに記述できるようになってほしい。
コンストラクタ
Vector3 オブジェクトを生成するときは「new Vector3(x値, y値, z値)」と書く。x, y, z値の型は float だ。
これで、指定した3成分の値を持ったものが生成される。
var v3 = new Vector3(1.0f, 2.0f, 3.0f); // Vector3 オブジェクトを生成し、v3 に代入 cube.transform.position += new Vector3(1.0f, 0, 0); // cube の x 座標を +1
スタティック変数
サイコロの面と同じ6方向の単位ベクター:up, down, left, right, forward, back が用意されている。
これらは (0, 1, 0), (0, -1, 0), (-1, 0, 0), (1, 0, 0), (0, 0, 1), (0, 0, -1) と同じものだ。
スタティック変数と呼ぶとわかりづらいかもしれないが、これらは読み取り専用で、値を上書きできないので、 クラス固有の定数と理解すればいいと思う。
以下の使用例のように、「Vector3.」に続けて記述し、式の中で使うことができる。
var vLeft = Vector3.left;
演習問題:
メンバ変数
読み書き可能なメンバ変数としては、各座標成分の x, y, z がある。型はすべて float だ。
var v2 = new Vector3(1, 2, 3);
まとめ