推导
矩阵点乘
点乘的矩阵形式
实际应用
//求目标在主角的前方还是后方
//先求出来目标相对于主角的偏移矢量
v = target.position - transform.position;
//计算偏移和主角位置的点乘
d = Vector3.Dot(v, transform.position);
Debug.DrawLine(v,Vector3.zero);
Debug.DrawLine(Vector3.zero, transform.position);
if (d > 0)
{
print("在前面");
}else if (d < 0)
{
print("在后面");
}
else
{
print("垂直");
}
-----------------------------------上面的应用有点错误,留作警醒----------------------------------下面正确解决方案
//求目标在主角的前方还是后方
//先求出来目标相对于主角的偏移矢量
v = target.position - transform.position;
//计算偏移和主角前方位置的点乘
d = Vector3.Dot(v, transform.forward);
Debug.DrawLine( transform.forward * 10, Vector3.zero);
Debug.DrawLine(v, Vector3.zero);
if (d < 0)
{
print("在后面");
}else if (d > 0)
{
print("在前面");
}
else
{
print("垂直");
}