简单的向量运算

简单介绍一下点乘跟叉乘的几何运算和它们在unity里的常用方法

点乘 :Dot(A,B)=|A|*|B|*cos(AB)

        cos(AB)代表A向量跟B向量的夹角的cos值

        |A|、|B|分别代表两个向量的长度

点乘常用来判断目标在角色的前方还是后方,举个例子:

目标的位置为 target.position 角色的位置为 transform.position

角色到目标的方向:

        dir=(target.position-transform.position).normalized   //这里用了归一化,方便计算

点乘的结果:

        result=Vector3.Dot(transform.forward,dir)//角色的朝向跟角色到目标的方向

如何通过result来判断方向:
        result>0 :目标在角色前方(夹角 <90°)
        result<0 :目标在角色后方(夹角 >90°)
        result=0 :目标在正侧方(夹角=90°)

叉乘:Cross(A,B)=A*B=|A|*|B|*sin(AB)

sin(AB)代表A向量跟B向量的夹角的sin值

又乘生成一个垂直于两向量的新向量

叉乘的结果:

        crossResult=Vector3.Cross(transform.forward,dir)

如何通过crossResult来判断方向:

       crossResult.y>0:目标在角色左侧
       crossResult.y<0:目标在角色右侧
       crossResult=Vector3.zero两向量共线(正前或正后)

通过点乘跟叉乘可以获取目标在角色的具体方位,左前、左后、右前、右后等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值