3D游戏 位置计算

在作rpg类游戏的过程当中,常常遇到要判断周围怪物相对自身的方位spa

 

1.判断目标在本身的先后方位可使用下面的方法:orm

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

       返回值为正时,目标在本身的前方,反之在本身的后方
 get

2.判断目标在机子的左右方位可使用下面的方法:it

   Vector3.Cross(transform.forward, target.position).yio

      返回值为正时,目标在本身的右方,反之在本身的左方form

 

3.在这里顺便解说下关于空间向量的点积和叉积:transform

A.点积 
  点积的计算方式为:  a·b=|a|·|b|cos<a,b>  其中|a|和|b|表示向量的模,<a,b>表示两个向量的夹角。另外在 点积 中,<a,b>和<b,a> 夹角是不分顺序的。 
  因此经过点积,咱们实际上是能够计算两个向量的夹角的。 
  另外经过点积的计算咱们能够简单粗略的判断当前物体是否朝向另一个物体: 只须要计算当前物体的transform.forward向量与 otherObj.transform.position 的点积便可, 大于0则在前方,不然在后方。
方法

B.叉积 
  叉积的定义: c =a x b  其中a,b,c均为向量。即两个向量的叉积获得的仍是向量! 
  性质1: c⊥a,c⊥b,即向量c垂直与向量a,b所在的平面 。 
  性质2: 模长|c|=|a||b|sin<a,b> 
  性质3: 知足右手法则 。从这点咱们有axb ≠ bxa,而axb = – bxa。因此咱们可使用叉积的正负值来判断向量a,b的相对位置,即向量b是处于向量a的顺时针方向仍是逆时针方向
co