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

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

点乘,也叫向量的内积、数量积。顾名思义,求下来的结果是一个数。向量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值判断上下;




  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值