このエントリーをはてなブックマークに追加

 

Vector3 入門
Copyright (C) 2015 by Nobuhide Tsuda

 

※ イラスト提供:かわいいフリー素材集「いらすとや」様

概要

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);

まとめ