Unity中向量有关的方法

来源:互联网 发布:电脑游戏多开器 端口 编辑:程序博客网 时间:2024/06/08 11:33

以下是在Unity5.x 3D 游戏开发技术详解与典型案例这本书上看到有关向量的一些方法,但是并没有一一测试,仅仅测试了几个常用的向量用法,记录下来以备以后用到。

Lerp -两向量之间的线性插值
Slerp -在两个向量之间进行球形插值
OrthoNormalize -使向量标准化并且彼此相互垂直
MoveTowards -从当前位置移向目标
RotateTowards -当前向量转向目标
SmoothDamp -随着回见的推移,逐渐改变一个向量朝向预期的目标
Scale -两个适量组件对应相乘
Cross -两个向量的交叉乘积
Reflect -沿着法线反射向量
Dot -两个向量的点乘
Project -投影一个向量到另一个向量
Angle -返回两个向量的夹角
Distance -返回两点之间的距离
ClampMagnitude -返回向量的长度,最大不超过maxLength所示的长度
Min -返回两个向量中长度较小的一个
Max -返回两个向量中长度较大的一个
+ -两个向量相加
- -两个向量相减
== -两个向量是否相等
!= -两个向量是否不相等

下面是常见的几个使用方式

Vector3 v1 = new Vector3(-1, 0, 0);Vector3 v2 = new Vector3(1, 1, 0);angle = Vector3.Angle(v1, v2);          //向量夹角返回值是角度制distance = Vector3.Distance(v1, v2);    //两点距离var dot = Vector3.Dot(v2, v1);          //向量点乘cross = Vector3.Cross(v1, v2);          //向量叉乘

在进行向量运算旋转角度等情况下,需要判断两个向量夹角正负的情况,采用了一个本办法,就是数学上的向量计算:向量A(x1,y1),向量B(X2,y2)
result = x1*y2-x2*y1
result 大于零,则A向量到B向量是逆时针
result 小于零,则A向量到B向量是顺时针
参考以下链接:> http://blog.csdn.net/hy3316597/article/details/52732963
部分代码:

var angle = Vector2.Angle(newDeltaVector, oldDeltaVector);if (oldDeltaVector.x * newDeltaVector.y - newDeltaVector.x * oldDeltaVector.y < 0){    angle = -angle;}//这里的angle是前后两个向量夹角的差值,用来作为物体角度的增量
原创粉丝点击