首先我们先看下什么是点乘和叉乘

点乘,也叫向量的内积、数量积。顾名思义,求下来的结果是一个数。向量a·向量b=|a||b|cos<a,b>

由于|a|和|b|都是正数,所以结果的正负是由于cos<a,b>这部分决定的

  浅谈游戏中的位置判断——点乘+叉乘

由上图可以看出当角度在0-π/2之间时cos<a,b>正值 在π/2-π之间是正值;

所以由此我们可以根据这个结果判断物体之间的相对位置

当像个向量的点乘结果为正的时候 物体在参照物前方,反之则为负

下面画图演示下:

浅谈游戏中的位置判断——点乘+叉乘浅谈游戏中的位置判断——点乘+叉乘


从上图看出 两个向量分别是:(参考点.transform.forward)和(目标点:transform.position-参考点:transform.position)注意不要减反;



叉乘:

叉乘,也叫向量的外积向量积。顾名思义,求下来的结果是一个向量,记这个向量为c。

  |向量c|=|向量a×向量b|=|a||b|sin<a,b>

  向量c的方向与a,b所在的平面垂直,且方向要用“右手法则”判断(用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向)。

叉乘求得的结果是原两个向量的所在平面的垂直向量

浅谈游戏中的位置判断——点乘+叉乘浅谈游戏中的位置判断——点乘+叉乘

所以:c的方向取决于ab之间的相对位置 b在a左边时 c朝上 反之则朝下;

由此我们可以得出c向量的y值为正时 目标在参考点的左边 否则则在右边;

笔者认为 也可以用叉乘的向量的x值判断前后 可以用z值判断上下;




相关文章:

  • 2021-12-15
  • 2021-04-22
  • 2021-11-22
猜你喜欢
  • 2021-07-14
  • 2022-12-23
  • 2021-12-15
相关资源
相似解决方案