Vector3.Dot 与Vector3.Cross

时间:2021-11-09 09:06:39

Vector3.Dot(点积) :

点积的计算方式为:  a·b=|a|·|b|cos<a,b>; 其中<a,b>和<b,a> 夹角不分顺序;

物理学中点积用来计算力沿物体运动的方向所做的功:W=F*S=|F|*|S|*cosθ;功是数量,故点积又称数量积,无向积等;

通过点积的计算我们可以简单粗略的判断当前物体是否朝向另外一个物体: 只需要计算当前物体的transform.forward向量与 (otherObj.transform.position – transform.position)的点积即可, 大于0则面对,否则则背对着。

判断目标在自己的前后方位可以使用下面的方法:

Vector3.Dot(transform.forward, target.position)

       返回值为正时,目标在自己的前方,反之在自己的后方

Vector3.Dot 与Vector3.CrossVector3.Dot 与Vector3.Cross

此处AimDirection默认为0.8,即direction<0.8,目标物体不在对面,解锁;


与Vector3.Cross(叉积):

叉积的计算方式为:两个向量的叉积a×b=︱a︱︱b︱sin<a,b> =|c| ;

在物理学里,用叉积表示一个力对一个定点的力矩 M=r×F;︱M︱=︱r︱︱F︱sinθ;力矩M是向量,因此叉积又称向量积,有向积等;c= a×b,c的方向用右手法则:将三个向量a,b,c附着于同一个起点,把右手的拇指顺着a的方向,食指顺着b的方向,则中指的指向就是c的方向。

判断目标在自己的左右方位可以使用叉乘的方法:   Vector3.Cross(transform.forward, target.position);      返回值为正时,目标在自己的右方,反之在自己的左方