2つのベクトルの内積
内積は2つのベクトルを乗算し、 2つのベクトル間の角度の余弦を乗算したベクトルの大きさと同じfloat値です。 2つのベクトルが全く同じ方向を指している場合、正規化されたベクトルの内積は1を返します。 反対方向を向く場合は-1を返します。またベクトルが垂直である場合0を返します。
// detects if other transform is behind this object var other : Transform; function Update() { if (other) { var forward = transform.TransformDirection(Vector3.forward); var toOther = other.position - transform.position; if (Vector3.Dot(forward,toOther) < 0) print ("The other transform is behind me!"); } }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; void Update() { if (other) { Vector3 forward = transform.TransformDirection(Vector3.forward); Vector3 toOther = other.position - transform.position; if (Vector3.Dot(forward, toOther) < 0) print("The other transform is behind me!"); } } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): public other as Transform def Update() as void: if other: forward as Vector3 = transform.TransformDirection(Vector3.forward) toOther as Vector3 = (other.position - transform.position) if Vector3.Dot(forward, toOther) < 0: print('The other transform is behind me!')