【Unity】Vector3がざっくりわかるはなし

 先にざっくり言ってしまうとVector3は
3座標よくばりセットです。

 意味がわからないと思いますので噛み砕いていきますが、座標や次元という言葉がピンとこない方は先に「座標と次元がざっくりわかるはなし」をご一読ください。また、変数についても「変数がざっくりわかるはなし」でご一読いただければと思います。

 XYZで示される座標は3つ揃ってやっと1つの情報になっています。もし突然「3階に集合」と言われてもどこのビルかわからなければ誰も到着できないようにどれか1つの座標情報だけでは活用先は限られます。

 そこで3つの変数をセットにしているのがVector3です。
 色々と便利な機能もあるのですが、本来の役割は本当にただそれだけです。

少し具体的に

 全ての座標を0でatsumareという名前で宣言する(作る)場合次のように書きます。

Vector3 atsumare = new Vector3();

 最初からXYZ =(30, 50, 3)で宣言したいときは

Vector3 atsumare = new Vector3(30, 50, 3);

 XYZそれぞれの値を知りたいときは次のように書けば利用できます。

atsumare.x
atsumare.y
atsumare.z

 特定の座標の値を変えることもできます。

atsumare.x = 100; //X座標を100にする
atsumare.y = atsumare.y + 1; //Y座標を1増やす 

 また、変数otameshiにatsumareのx座標を入れたいなら

float otameshi;
otameshi = atsumare.x;

 このようにVector3の名前に.xや.yを付け足すだけで普通の変数と同じように座標を操作することができます。

 1つよくある落とし穴のポイントとしてはTransform【トランスフォーム】コンポーネントで定義されているPosition【ポジション】などはVector3型ですが直接座標を操作できない点です。

//よくあるエラーのパターン
gameObject.transform.position.x = 100;

 これは一旦別のVector3型の変数を宣言してそれを代入することで解決できます。

//エラー回避サンプル
Vector3 otame = new Vector3(100, 0, 0); //(100,0,0)で初期化
gameObject.transform.position = otame;

//X座標以外いじりたくないなら
Vector3 otame2 = gameObject.transform.position; //ポジションを代入
otame2.x = 100;                                 //X座標だけ100に
gameObject.transform.position = otame2;

 勿論上記のサンプルは一例です。使い所や作りたいプログラムによって最適な書き方は変わります。

Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA