【Unity】Vector3.Scaleとは?ベクトル同士の掛け算を行うメソッド

Vector3.Scaleとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「Vector3同士の掛け算はできないの?」

「Vector3.Scaleはどうやって使うの?」

というお悩みの方に向けた内容となっています。

Unityでは、3次元空間における座標の位置や移動方向などを、Vector3という構造体を使ってx,y,zの変数で表しています。

このVector3同士の計算をする際に、加算減算は計算式を使ってできますが、乗算をする場合はそのままでは計算することが出来ません。

そこで、Vector3同士の掛け算を行う際に使うのが、Vector3.Scaleというメソッドです。

このページでは、Unityで使うことができるVector3.Scaleというメソッドについて、どんな仕組みなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

Vector3.Scaleとは?

冒頭でも解説した通り、Vector3.Scaleメソッドとは、Vector3同士の掛け算を行うことができるメソッドです。

通常、Vector3同士の足し算引き算を行いたい場合、以下のように「+」「-」の記号を使って記述することで、それぞれのVector3が持つx,y,zの値を加算および減算したVector3を作ることができます。

using UnityEngine;

public class Test : MonoBehaviour
{
    Vector3 a = new Vector3(5, 10, 5);
    Vector3 b = new Vector3(3, 2, 4);

    void Start()
    {
        Vector3 c = a + b;  // Vector3同士の足し算の処理
        Vector3 d = a - b;  // Vector3同士の引き算の処理
        Debug.Log("足し算の結果:" + c);
        Debug.Log("引き算の結果:" + d);
    }
}

しかし、Vector3同士の掛け算を行う場合、同じように「*」の記号を使って記述しても掛け算されずにエラーが発生してしまいます。

using UnityEngine;

public class Test : MonoBehaviour
{
    Vector3 a = new Vector3(5, 10, 5);
    Vector3 b = new Vector3(3, 2, 4);

    void Start()
    {
        Vector3 c = a * b;  // エラーが発生する
        Debug.Log("掛け算の結果:" + c);
    }
}

そこで、このVector3同士の掛け算を行う際に使うのが、Vector3.Scaleメソッドとなっています。

なお、Vector2同士は以下のようにそのままでも掛け算することができるようになっています。

using UnityEngine;

public class Test : MonoBehaviour
{
    Vector2 a = new Vector2(5, 10);
    Vector2 b = new Vector2(3, 2);

    void Start()
    {
        Vector2 c = a * b;  // Vector2同士の掛け算
        Debug.Log("掛け算の結果:" + c);
    }
}

Vector3.Scaleの使い方

Vector3.Scaleを使う際は、以下のように引数に2つのVector3を指定することで、乗算された新しいVector3を作ることができます。

Vector3.Scale(Vector3 a, Vector3 b);

上記のScaleメソッドによって出来上がるVector3は、それぞれのメンバ変数の値が乗算されることになるので、

Vector3(a.x * b.x, a.y * b.y, a.z * b.z)

というVector3になります。

実際にUnity上で以下のようなスクリプトを作ってみます。

using UnityEngine;

public class Test : MonoBehaviour
{
    Vector3 a = new Vector3(2, 8, 12);
    Vector3 b = new Vector3(3, 3, 2);

    void Start()
    {
        Vector3 c = Vector3.Scale(a, b);  // Vector3同士の掛け算
        Debug.Log("掛け算の結果:" + c);
    }
}

5行目で作成したaというベクトル(2, 8, 12)と、6行目で作成したbというベクトル(3, 3, 2)を10行目でScaleメソッドで掛け算しています。

コンソールウィンドウに表示してみると、

それぞれのベクトルのメンバ変数同士が掛け算されたVector3が、出来上がっているのが分かります。

まとめ

このページでは、Unityで使えるVector3.Scaleについて、どんなメソッドなのか、また使い方までをまとめていきましたが、いかがでしたでしょうか?

Vector3.Scaleとは、Vector3同士の掛け算を行うことができるメソッドで、それぞれのVector3が持つx,y,zの値を乗算することができます。

Vector3.Scaleの引数に、2つのVector3型の変数を指定してあげることで、掛け算されたVector3を新しく作成することができます。

加算や減算は計算式でそのまま行うことができますが、乗算はエラーが発生してしまうためVector3.Scaleを使うようにしましょう。

最後までお読みいただきまして、ありがとうございました!

コメント