Unity中的向量

在游戏开发中,我们用向量(Vector)去定义网格方向和其他一些方面的计算

向量 是由两个点所构成的一条直线 

向量的长度也称之为向量的大小(模)(Magnitude)

我们先从2D向量开始讨论 

2D向量是基于某个初始点开始,图中的初始点是(0,0)点,指向图中任何一点的一条直线

由于它是从初始点开始的一条直线,所以向量还是有方向的

向量Vector2由两个分量组成,分别是X和Y

分量的X和Y表示了这个点距离原点(0,0) X轴 Y轴的距离

而向量的终点(12,6)与原点(0,0)的距离,就是向量的大小(Magnitude)

用勾股定理可求得,图示的向量大小为13

介绍完了向量的基本属性,接下来我们来看看向量的一些基本运算

假设上图中的向量BA是一个人从原点沿直线跑到A点,到达A点后他挠了挠头发现跑错了方向,距离终点还有一段距离,于是他又从点A朝着终点E跑去.

 

 

这个时候我们能够发现,无论是走A点绕路到E点,还是走B点直接到E点,他们的终点都是E点

此时这个坐标轴上存在3条向量分别是向量BA,AE,BE.我们通过计算可以发现向量BA的向量AE的分

量相加等于向量BE的分量,这其实就是向量的加法

向量的减法也是如此

在游戏开发中我们通常用来预测目标的方向 

点积和叉积

点积(Dot Product): 点积是两个向量之间的一种运算,也称为数量积。它的结果是一个标量(即单个的数值)。点积可以通过将两个向量的对应分量相乘,然后将乘积相加而得到。如果有两个向量 A 和 B,则它们的点积可以表示为:A · B = Ax * Bx + Ay * By + Az * Bz,其中 Ax、Ay、Az 和 Bx、By、Bz 分别是向量 A 和 B 的 x、y、z 分量。点积有许多用途,例如计算两个向量之间的夹角、投影等。在unity中我们可以使用向量的点积来计算自身与目标位置的角度,具体代码演示如下:

向量的点乘还可以用来判断目标是否在角色的前方,(0,1)则在前方,(-1,0)则在身后

当我们谈到向量时,点积和叉积是两个常见的运算。

叉积(Cross Product): 叉积是两个向量之间的另一种运算,也称为向量积。它的结果是一个新的向量,垂直于原始两个向量所在的平面。具体来说,如果有两个向量 A 和 B,则它们的叉积可以表示为:A × B = (Ay * Bz - Az * By) * i + (Az * Bx - Ax * Bz) * j + (Ax * By - Ay * Bx) * k,其中 i、j、k 分别是 x、y、z 轴的单位向量。叉积的结果是一个新的向量,其方向由右手法则确定。叉积也有许多应用,例如计算平面的法向量、判断两个向量之间的方向关系等。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值