libro
www.tuyano.com
C#ではじめるUnityプログラミング入門

TransformでGameObjectを移動する (3/4)

作成:2014-08-30 12:14
更新:2014-08-30 12:14

■positionプロパティとVector3クラス

位置を扱うとき、よく目にすることになるのが「Vector3」というクラスです。これは「ベクトル」データを扱うためのものです。

ベクトルというのは、その昔、学校で習った記憶がぼんやりとあるんじゃないでしょうか。ベクトルは、空間における大きさと方向をもった量を示すものです。要するに、「こっちの方向にこれだけの力」とかを表すのに用いるものですね。移動や回転などを行わせる際、このベクトルデータであるVector3のインスタンスを用意して利用することができるようになっているのです。

このVector3クラスは、以下のようにしてインスタンスを作成します。引数はそれぞれfloat値になります。
変数 = new Vector3( X値 , Y値 , Z値 );
X, Y, Zのそれぞれの軸の量を示す値を指定することで、3次元空間における方向と量(力や距離など)を表すVector3インスタンスが作成できます。

このVector3クラスには、そのまま「x」「y」「z」というプロパティが用意されており、それらの値をy特設変更することで値を操作することができます。


■positionプロパティ

このVector3が値として利用されているものの代表は、Transformクラスの「potision」プロパティでしょう。このpositionは、GameObjectの位置を示すものです。この値を変更することで、表示位置を操作することが可能になります。

簡単な利用例を下に挙げておきました。Updateメソッドを書き換えてください。シーンを実行すると、Z軸方向にゆっくりとCubeが遠ざかっていきます。ここではtransform.positionVector3インスタンスを取り出し、そのzの値を書き換えて再び値を設定しています。

this.transform.position.z += 0.01f;でも良さそうに思いますが、this.transform.positionプロパティ内のVector3インスタンスをそのまま書き換えることはできないようで、一度変数に取り出してから再設定する、という形で利用するのが基本となります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

void Update () {
    Vector3 v = this.transform.position;
    v.z += 0.01f;
    this.transform.position = v;
}

※関連コンテンツ

「C#ではじめるUnityプログラミング入門」に戻る