UnityのVector3の詳しい紹介とメソッドの紹介


ここに画像の説明を挿入します

概要

Unity のクラスに関してはVector3、一般的に使用されるメソッドと操作がいくつかあります。

  1. magnitudeメソッド: ベクトルの長さを返します。

    float length = vector.magnitude;
    
  2. sqrMagnitudeメソッド: ベクトルの平方長を返します。通常、平方根演算を実行せずにベクトル サイズを比較するために使用され、効率が向上します。

    float squaredLength = vector.sqrMagnitude;
    
  3. normalizedメソッド: ベクトルの単位ベクトル、つまり長さ 1 で方向が同じベクトルを返します。

    Vector3 normalizedVector = vector.normalized;
    
  4. Vector3.Dot方法: 2 つのベクトルの内積 (内積) を計算します。これは、2 つのベクトル間の類似性を測定するために使用されます。

    float dotProduct = Vector3.Dot(vectorA, vectorB);
    
  5. Vector3.Cross方法: 2 つのベクトルの外積 (外積) を計算します。これは、2 つのベクトルに垂直なベクトルを計算するために使用されます。

    Vector3 crossProduct = Vector3.Cross(vectorA, vectorB);
    
  6. Vector3.Lerp方法: 2 つのベクトル間の線形補間。

    Vector3 interpolatedVector = Vector3.Lerp(startVector, endVector, t);
    
  7. Vector3.Distance方法: 2 つのベクトル間の距離を計算します。

    float distance = Vector3.Distance(vectorA, vectorB);
    
  8. Vector3.Angle方法: 2 つのベクトル間の角度を計算します。

    float angle = Vector3.Angle(vectorA, vectorB);
    
  9. Vector3.Project方法: 1 つのベクトルを別のベクトルに投影して、投影されたベクトルを取得します。

    Vector3 projection = Vector3.Project(vectorToProject, ontoVector);
    
  10. Vector3.Reflect方法: 法線を中心としたベクトルの反射ベクトルを計算します。

    Vector3 reflection = Vector3.Reflect(incidentVector, normal);
    

これらのメソッドを使用して、測定、変換、回転、衝突検出などを含むさまざまなベクトル計算を実行できます。特定のニーズに応じて、適切な方法を選択すると、ベクトル演算をより簡単に処理できるようになります。

小型チョッパー

以下は、Vector3クラスのさまざまなメソッドの使用方法を、詳細なアノテーション手順とともに示すサンプル コードです。

using UnityEngine;

public class VectorMethodsExample : MonoBehaviour
{
    
    
    public Transform target; // 用于演示的目标对象
    public Transform otherObject; // 用于演示的另一个对象

    private void Update()
    {
    
    
        Vector3 moveDirection = target.position - transform.position;

        // 获取向量的长度
        float magnitude = moveDirection.magnitude;

        // 获取向量的平方长度
        float sqrMagnitude = moveDirection.sqrMagnitude;

        // 归一化向量
        Vector3 normalizedDirection = moveDirection.normalized;

        // 计算两个向量的点积
        float dotProduct = Vector3.Dot(moveDirection, otherObject.position - transform.position);

        // 计算两个向量的叉积
        Vector3 crossProduct = Vector3.Cross(moveDirection, otherObject.position - transform.position);

        // 在两个向量之间进行线性插值
        float t = Mathf.PingPong(Time.time, 1f); // 0 到 1 之间的插值参数
        Vector3 interpolatedVector = Vector3.Lerp(moveDirection, otherObject.position - transform.position, t);

        // 计算两个向量之间的距离
        float distance = Vector3.Distance(transform.position, otherObject.position);

        // 计算两个向量之间的夹角
        float angle = Vector3.Angle(moveDirection, otherObject.position - transform.position);

        // 将一个向量投影到另一个向量上
        Vector3 projectedVector = Vector3.Project(moveDirection, otherObject.position - transform.position);

        // 计算一个向量关于一个法线的反射向量
        Vector3 normal = Vector3.up; // 示例法线
        Vector3 reflection = Vector3.Reflect(moveDirection, normal);

        Debug.Log("Magnitude: " + magnitude);
        Debug.Log("Squared Magnitude: " + sqrMagnitude);
        Debug.Log("Normalized Direction: " + normalizedDirection);
        Debug.Log("Dot Product: " + dotProduct);
        Debug.Log("Cross Product: " + crossProduct);
        Debug.Log("Interpolated Vector: " + interpolatedVector);
        Debug.Log("Distance: " + distance);
        Debug.Log("Angle: " + angle);
        Debug.Log("Projected Vector: " + projectedVector);
        Debug.Log("Reflection: " + reflection);
    }
}

Vector3これは、さまざまなメソッドがどのように使用されるかを示すための単なる例であることに注意してください。実際のアプリケーションでは、特定の状況に応じて調整する必要があります。この例が、Vector3クラス メソッドの理解を深め、使用するのに役立つことを願っています。

関連する説明パラメータ

「Vector3」は通常、3 次元空間内のベクトルを表すデータ構造またはクラスであり、その名前はそれが 3 つの成分を持つベクトルであることを示しています。多くのプログラミング言語や数学ライブラリでは、このタイプのベクトルは、位置、方向、変位などの概念を表すためによく使用されます。

通常の 3 次元ベクトル自体には、通常、x、y、z の 3 つのコンポーネントのみが含まれます。

小さな例を見てみましょう

このコード行は多くのゲーム開発環境で一般的な操作であり、移動方向または変位を表す 3 次元ベクトル (Vector3) を作成するために使用されます。このコード行の各部分をステップごとに説明してみましょう。

Vector3 moveDirection = new Vector3(horizontalInput, 0f, verticalInput);
  • Vector3: これは、3 次元ベクトルを表すクラスまたは構造体です。通常、これには 3 つのコンポーネント (3 次元空間の水平方向、垂直方向、奥行き方向に対応する x、y、z) が含まれています。

  • moveDirection: 移動方向や変位を表す3次元ベクトルを格納する変数名です。これは、位置、方向、速度などの情報を保存するコンテナーと考え​​ることができます。

  • new Vector3(horizontalInput, 0f, verticalInput)Vector3:コンストラクタに引数を渡して新しい三次元ベクトルを作成する式です。その中には、入力デバイス (キーボード、コントローラーなど) の入力を表す変数がhorizontalInputありverticalInput、プレイヤーの水平方向と垂直方向の入力値を示します。これらの入力値はfloat浮動小数点 ( ) 型にすることができます。

    • horizontalInput:水平方向の入力値を表します。通常、左から右を引くのが一般的な規則です。
    • 0f: この値は y 方向の動きを表し、通常は 0 に設定されます。これは、多くのゲームでは通常、高さを表すために垂直方向が使用され、この上下の移動の場合、高さは変化しないためです。
    • verticalInput:垂直方向の入力値を表します。一般に、下から上を引くのは単なる一般的な慣例です。

つまり、このコードが意味するのは、moveDirectionプレイヤーの水平方向と垂直方向の入力に基づいて移動方向を表す と呼ばれる 3D ベクトルを作成することです。このベクトルは、プレイヤー キャラクター、カメラ、弾丸など、さまざまなゲーム オブジェクトの移動操作に使用できます。

おすすめ

転載: blog.csdn.net/weixin_74850661/article/details/132460036