冬乃Tech Blog

主にUnityでのC#コーディングで得た知見をまとめていく

Unityの角度の求め方とベクトル

ちょっと勘違いしてたので、忘れないようにここにも記載
少しややこしくて頭の中で混線してたけども、最近何となくわかってきた

Vector3.angleを使う

Vector3.angle(Vector3 from, Vector3 to)
これで角度が求まる

しかしここで重要なのが、Vector3が点(座標)ではないと言うこと(ここでつまづいてた)
Vector3って座標を計算する時にめっちゃ使ってたので、Vector3 = 座標っていう認識があった(僕だけじゃないと思いたい...)
あくまでVector3.angleは2つのベクトルの角度差を求める。 なので、点(座標として使っている状態)では使えない。 ちなみに、ワールド座標との角度を計算したいときには
Vector3.up //ワールドの上ベクトル(y軸方向)
Vector3.right //ワールドの→ベクトル(x軸方向)
VEctor3.forward //ワールドの前ベクトル(z軸方向)
等、いちいち(0,1,0)とかで指定しなくても大丈夫。便利。
Unityの公式リファレンスに全部乗ってる
docs.unity3d.com

二点のベクトルを求める

二つの座標間のベクトルを求める時は、終点(ベクトルの先)座標から始点(ベクトルの元)を引けばいい
Vector3 ベクトル = Vector3 終点 - Vector3 始点
プレイヤーから目標物までの方向をとりたいときとかによく使う。
ウェイポイントを配列で順番に管理して、近づいたら次のウェイポイントまでのベクトルを再計算とかすると、簡単にナビゲーションシステムができる。