Unity ベクトルのいくつかの操作と関数

この記事では、主にベクトルの加減算、ドット乗算、クロス乗算など、Unity におけるベクトルのいくつかの演算と関数を紹介します。

ベクトルの加算と減算

2 つのベクトル a と b があり、ベクトル a=(x1,y1)、ベクトル b=(x2,y2) があるとすると、加減算によって得られるベクトル c は (x1+x2,y1+y2),(x1 - x2、y1-y2)。

Unity では、減算を使用して方向を見つけることができます。ゲームにおいて、プレイヤーの座標をa、敵の座標をbとし、この2つの座標を世界座標とします。この 2 つの座標は原点から始まるベクトルに等しいので、プレイヤーの座標と敵の座標を引くとベクトルが得られ、敵がこのベクトルに沿って歩くと、敵がプレイヤーに向かって歩いてくるのが見えます。

上の図に示すように、プレイヤー、エメニー、グラウンド プレーンの 3 つのゲーム オブジェクトを作成します (追加後は必ずリセットしてください)。 WalkTo スクリプトと Character Cintroller コンポーネントを敵にマウントします。WalkTo スクリプトの内容は次のとおりです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WalkTo : MonoBehaviour
{
    public Vector3 v1;
    public Vector3 v2;
    public Vector3 direction;
    public CharacterController cc;

    private void Awake()
    {
        v1 = GameObject.Find("player").transform.position;
        v2 = this.transform.position;
        cc = GetComponent<CharacterController>();
    }

   
    void Update()
    {
        //这里乘以0.1f让物体移动的慢一些
        direction = (v1 - v2) * 0.1f;
        cc.SimpleMove(direction);
    }
}

 コードのロジックも非常にシンプルで、上記のベクトル減算ロジックと Character Controller の SimpleMove メソッドを使用して、敵オブジェクトをプレイヤーに向かって移動します。

ベクトルの内積

点の達成は、ベクトルの対応する座標を乗算することです。2 つのベクトル a と b があり、ベクトル a=(x1,y1)、ベクトル b=(x2,y2) であるとすると、点の乗算によって得られるベクトル c は次のようになります。 (x1x2、y1y2)。

2 つのベクトル間の角度は、逆余弦を使用して求めることができます。 θ=arccos((a・b)/ |a| |b| )。ただし、他の Unity には a から b までの角度を求める関数 Vector3.Angle(a,b) があり、浮動小数点数を返すことに注意してください。

他に具体的な用途にはまだ出会っていません。

ベクトルの外積

2 つのベクトル a と b があるとします。ベクトル a=(x1,y1,z1)、ベクトル b=(x2,y2,z2)、外積によって得られるベクトル c は (y1z2-z1y2,z1x2-x1z2,x1y2) となります。 -y1x2)。 p がベクトル a とベクトル b から構成される平面であるとすると、ベクトル c はその平面に垂直になります。

「Jelly Bean Man」では、一部のレベルに傾斜面があり、プレイヤーが傾斜面に遭遇すると、傾斜面と直角の方向に弾き飛ばされます。ベクトルの外積により、平面に垂直なベクトルを取得でき、そのベクトルに速度を適用すると、キャラクタにアタッチされたリグボディに同じ効果をキャラクタが与えることができます。

まだ追加中です。 。 。 。 。

おすすめ

転載: blog.csdn.net/qq_68117303/article/details/132675466