1.点乘计算公式:
向量A(x,y,z)
向量B(a,b,c)
A*B=a*x+b*y,c*z
2.点乘几何意义
点乘结果>0 向量夹角结果为锐角
点乘结果=0 向量夹角结果为直角
点乘结果<0 向量夹角结果为钝角
//调试画线(前两个参数为起点和终点)
Debug.DrawLine(this.transform.position,this.transform.position+this.transform.forward,Color.red);
//画射线(前两个参数为起点,方向)
Debug.DrawRay(this.transform.position,this.transform.forward,Color.red);
3.通过点乘判断物体方位
a向量:Debug.DrawRay(this.transform.position,this.transform.forward,Color.red);
b向量:Debug.DrawRay(this.transform.position,target.position-this.transform.position,Color.red);
得到两个向量的点乘结果
float dotResult=Vector3.Dot(this.transform.forward,target.position-this.transform.position);
if(dotResult>0){
Console.WriteLine(b在a的上方);
}
else{
Console.WriteLine(b在a的下方);
}
4.
知识点五: 通过点乘推导算出夹角
1.用单位向量算出点乘结果
float dotResult=Vector3.Dot(this.transform.forward,(target.position-this.transform.position).normalized);
2.用反三角函数得出角度
print(Mathf.Acos(dotResult)*Mathf.Red2Deg);
//Vector3中提供了得到两个向量之间夹角的方法
print(Vector3.Angle(this.transform.forward,target.position-this.transform.position));