Vectorクラスの使い方について【Unity】

最近は、Unityでゲームを作る事が多く、その中で頻繁に出てくるのがVectorクラスです。

キャラクターを登場させて、動かそうと思ったらVectorを使うことになるので基本的な使い方をマスターしておく必要があります。

今回は、Vectorクラスの使い方について紹介します。

スポンサーリンク

Vectorクラスについて

Vectorとは

3Dゲームを作る場合、どこにキャラクターを配置するのか、どの方向に移動するのかなどを決めるために、float型の「x」「y」「z」の値を使います。2Dだと「x」と「y」ですね。

これらの値をまとめたのがVectorクラスです。

もっと細かく言うと、3DだとVector3クラス、2DだとVector2クラスになります。

専門的な話になると、構造体と言って、変数とメソッドをまとめる仕組みです。クラスより高速に動きますが、使える機能に制限があります。

プログラマー向け数学の本には、びっしりVectorの事について書かれているので、基礎からがっつり勉強したい人は是非読んでみてください。

それぞれのクラスには、メンバ変数が用意されていて、座標やベクトルとして使うことになります。

例えば、「x=3」「y=2」という値を座標にした場合は、(3,2)という位置にキャラクター等が配置させることになります。

Vector2クラスの座標

上の画像のようなイメージです。

黒丸の位置に何かしらのオブジェクトが配置されるわけですね。

次に、ベクトルとして使う場合ですが、「x=3」「y=2」では、現在地から「x方向に3」「y方向に5」進むことを意味します。

Vector2クラスをベクトルとして使う場合のイメージ

先ほどの黒丸を現在地とすると上図のようになりますね。

座標として使うのか、ベクトルとして使うのかで全然意味が異なるので、しっかり使い分けるようにしましょう。

Vectorクラスの使い方

スクリプトにするとどのような記述になるのか確認しましょう。

Vector2クラスのサンプルスクリプト

これは、Vector2クラスのメンバ変数に数値を加算するスクリプトです。

まずは、Vector2クラスの変数である「CharaPosition」を宣言します。キャラクターのポジションを表しています。

次に、new Vector2(3.0f,2.0f)でインスタンスを作成して代入します。先ほど説明した通りVector2クラスはメンバ変数にfloat型の「x」と「y」を持っているので、引数は「3.0f」と「2.0f」になるわけです。

メンバ変数「x」「y」にアクセスする場合は、「変数名.x」「変数名.y」と記述することでアクセス出来ます。

上のスクリプトの場合は「CharaPosition.x」「CharaPosition.y」といった感じです。

これを利用して11行目と12行目で、それぞれの座標を指定した値で増加しています。

それぞれの値を増加させているので、キャラクターは右上に移動することになります。

逆に、値を減少させると、キャラクターは左下に動きますね。

Vector2同士の減算でベクトルを求めるスクリプト

Vector2クラス同士の減算からベクトルを求めるスクリプト

やや応用になりますが、減算が出来たり、座標からベクトルを求める事も出来ます。

このスクリプトは、「start」から「goal」に向かうベクトル「dir」を求めています。

要するに、goal地点からstart地点を減算すれば良いわけです。

12行目で減算し、その結果を「dir」に代入します。dirは(6.0,3.0)になります。

続いて14行目で、Vector2クラスが持つmagnitudeメンバ変数を使って「dir」の長さを求めています。このmagnitudeがとても便利で、なんとベクトルの長さを返してくれます。

最初に減算を行い、座標を取得することで、ベクトルの長さが求められるわけですね。

他にも、発想次第でさまざま使い方が出来るのがVectorクラスなので、リファレンスを参考に試行錯誤してみてはいかがでしょうか。

スポンサーリンク

シェアする

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

フォローする