Unity3D 数学之向量
Posted Unityyyds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D 数学之向量相关的知识,希望对你有一定的参考价值。
什么是向量
- 一个数学列表,表示各个维度上有向位移
- 一个有大小有方向的物理量
- --大小就是向量的模长。
- --方向描述了空间中向量的指向。
- 可以表示物体的位置和方向。
向量的形式
向量的大小(模)
- 向量各分量平方和的平方根。
- ·公式:2x²+y²+z²
- API: float dis=vector.magnitude;
- 模的平方vector.sqrMagnitude
- 因为平方根的计算耗时长,所以效率高于magnitude。
void Demo1()
Vector3 pos = t2.transform.position;
//求模长 三种方法
float m01 = Mathf.Sqrt(Mathf.Pow(pos.x, 2) + Mathf.Pow(pos.y, 2) + Mathf.Pow(pos.z, 2));
float m02 = pos.magnitude;
float m03 = Vector3.Distance(Vector3.zero, pos);
Debug.DrawLine(Vector3.zero, t2.transform.position);
向量的方向
- ·获取向量方向也称“标准化向量”,或“归一化向量”;即获取该向量的单位向量。
- ·单位向量:大小为1的向量。
- 公式:V/|V|
- ·几何意义:将该向量拉长或者缩短,使模长等于1
- .API : Vector3 vector2=vector1.normalized;。
- -- vector2为vector1的单位向量
- -- vector1.Normalize();将vector1自身设置为单位向量
void Demo2()
Vector3 pos = t2.transform.position;
//获取向量方向
Vector3 n01 = pos / pos.magnitude;
Vector3 n02 = pos.normalized;
Debug.DrawLine(Vector3.zero, pos);
Debug.DrawLine(Vector3.zero, n02,Color.red);
向量相减
- ·等于各分量相加减
- ·公式:[x₁,y₁,z₁]-[x₂,y₂,z₂]=[x₁-x₂,y₁-y₂,z₁-z₂]
- 几何意义:向量a与向量b相减,结果理解为以b的终点为始点,以a的终点为终点的向量。方向由b指向a。
- ·应用:计算两点之间的距离和相对方向。
- 两条向量相减的结果向量方向指向被减,但是结果向量的起始点是Vector3.zero
void Demo3()
Vector3 relativeDirection = t1.transform.position - t2.transform.position;
//方向 指向被减向量(前面的)
//大小 两点间距
//注意 实际位置要平移到
Debug.DrawLine(Vector3.zero, relativeDirection);
//t3沿着relativeDirection方向移动
t3.transform.Translate(relativeDirection.normalized);
//relativeDirection.normalized 获取方向,避免两个物体间距对速度造成影响
向量相加
- 等于各分量相加和。
- 公式:[x₁,y₁,z₁] +[x₂,y₂,z₂]=[x₁+x₂,y₁+y₂,z₁+z₂]
- 几何意义:向量a与向量b相加,平移使b的始点与a的终点重合,结果为以a的始点为始点,以b的终点为终点的向量。
- 应用:物体移动
代码与相减同理
以上是关于Unity3D 数学之向量的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D之Vector3.Dot和Vector3.Cross的使用