ゲーム制作お疲れ様です~( ^^) _旦~~
Playerの位置からターゲットの方向を求める時は、
ベクトル同士の引き算で求められるそうですよ~('◇')ゞ
ターゲットの方向を求めたいときは、
ターゲットの位置 - Playerの位置 = Playerから見たターゲットの方向
という計算で求められます!
例えば~、
Playerがワールド座標でいうところのVector3(x = 5, y = 0, z = -9)にいるとして、
Enemy(ターゲット)はVector3(x = -3, y = 0, z = 3)にいるとしますね。
この時にスクリプトで、
Vector3 direction = enemy.transform.position - player.transform.position; Debug.Log(direction);
で実行してみると、
Vector3(-8, 0, 12); という結果になります。
これはPlayerから見たEnemyの方向を示しているようですね。
いや、PlayerからEnemyへのベクトルが分かる~といった方が
正しいのかもしれないぃ。
~角度を調べる~
Playerの向きに対してのEnemyの角度も計算することができますよ(^^)
2つのベクトルの角度を計算する時は、Vector3.Angleという関数を使うといいみたいです。
Vector3.Angleの引数に、Playerの正面のベクトルと、敵との方向を渡してあげると
角度がわかりますね~(^_-)-☆
Vector3 direction = enemy.transform.position - player.transform.position; float angel = Vector3.Angle(player.transform.forward, direction); Debug.Log(angel);
最後に全体のスクリプトを載せますね~('◇')ゞ
using UnityEngine; public class Test : MonoBehaviour { public GameObject player; //インスペクターからアタッチしてください~ public GameObject enemy; //インスペクターからアタッチしてください~ void Update() { Direction(); } void Direction() { Vector3 direction = enemy.transform.position - player.transform.position; //方向がわかる float angel = Vector3.Angle(player.transform.forward, direction); //角度がわかる Debug.Log(direction); Debug.Log(angel); } }
寒いので暖かくしてゲーム制作してくださいね~( ^^) _旦~~
おわりです~。