表示3D向量和点,3个分量分别为 x,y,z
定义了常用的向量:
静态常量
|
值
|
back
|
0,0,-1
|
forward
|
0,0,1
|
left
|
-1,0,0
|
right
|
1,0,0
|
up
|
0,1,0
|
down
|
0,-1,0
|
one
|
1,1,1
|
zero
|
0,0,0
|
negativeInfinity
|
float.NegativeInfinity,float.NegativeInfinity,float.NegativeInfinity 负无穷大
|
positiveInfinity
|
float.PositiveInfinity,float.PositiveInfinity,float.PositiveInfinity 正无穷大
|
属性
|
含义
|
magnitude
|
向量长度,只读
|
sqrMagnitude
|
长度的平方,只读
|
normalized
|
长度为1的单位向量,只读
|
向量的数学运算,大多数作为静态方法定义的
方法
|
功能
|
Angle
|
float
Angle
(
Vector3
from
,
Vector3
to
);
计算两个向量之间的角度
|
SignedAngle
|
float
SignedAngle
(
Vector3
from
,
Vector3
to
,
Vector3
axis
);
两个向量之间的有符号角度。值域为-180到180度。from-to顺时针为正,逆时针为负。3D向量的方向是任意的,所以需要指定旋转轴来确定角度符号,根据叉乘向量和旋转轴的角度确定符号,大于90度说明反了。计算方法:
Vector3 cross = Vector3.Cross(from,to);
float sign = Mathf.Sign(90 - Vector3.Angle(cross,axis));
|
ClampMagnitude
|
Vector3
ClampMagnitude
(
Vector3
vector
, float
maxLength
);
返回限定最大长度的向量,如果超过maxLength,返回maxLength
|
Cross
|
Vector3
Cross
(
Vector3
lhs
,
Vector3
rhs
);
向量叉乘,返回垂直于lhs和rhs的向量
|
Distance
|
float
Distance
(
Vector3
a
,
Vector3
b
);返回两个向量的距离
|
Dot
|
float
Dot
(
Vector3
lhs
,
Vector3
rhs
);
向量点乘。如果rhs是单位向量,则返回结果是lhs在rhs投影的向量的长度。
|
Lerp
|
Vector3
Lerp
(
Vector3
a
,
Vector3
b
, float
t
);
2个点线性插值,t>1时,t=1
|
LerpUnclamped
|
Vector3
LerpUnclamped
(
Vector3
a
,
Vector3
b
, float
t
);
2个向量线性插值。如果t>1,则继续向a->b的方向插值
|
Slerp
|
Vector3
Slerp
(
Vector3
a
,
Vector3
b
, float
t
);
球面插值,可以处理方向插值
|
SlerpUnclamped
|
Vector3
SlerpUnclamped
(
Vector3
a
,
Vector3
b
, float
t
);
球面插值,同上,只是允许t>1,且有效
|
Max
|
public static
Vector3
Max
(
Vector3
lhs
,
Vector3
rhs
);
返回2个向量中较大的那个
|
Min
|
public static
Vector3
Min
(
Vector3
lhs
,
Vector3
rhs
);
返回2个向量中较小的那个
|
MoveTowards
|
Vector3
MoveTowards
(
Vector3
current
,
Vector3
target
, float
maxDistanceDelta
);
从current移动到target,每次调用,移动距离不超过maxDistanceDelta。
|
Normalize
|
Vector3
Normalize
(
Vector3
value
);
向量单位化,并返回单位化后的向量
|
OrthoNormalize
|
void
OrthoNormalize
(ref
Vector3
normal
, ref
Vector3
tangent
);
将2个向量单位化,并且正交(夹角90度)
|
Project
|
Vector3
Project
(
Vector3
vector
,
Vector3
onNormal
);
求vector投影到onNormal的向量
|
ProjectOnPlane
|
Vector3
ProjectOnPlane
(
Vector3
vector
,
Vector3
planeNormal
);
将向量投影到planeNormal作为面法线的平面上
|
Reflect
|
Vector3
Reflect
(
Vector3
inDirection
,
Vector3
inNormal
);
根据入射向量和给定的法线,计算反射向量
|
RotateTowards
|
Vector3
RotateTowards
(
Vector3
current
,
Vector3
target
, float
maxRadiansDelta
, float
maxMagnitudeDelta
);
基本功能同Slerp,但是插值过程中,角度变化和长度变化不会超过maxRadiansDelta和maxMagnituedDelta
|
Scale
|
Vector3
Scale
(
Vector3
a
,
Vector3
b
);
向量分量分别相乘,也可以理解为用b对a 进行缩放
|
实现背包拖拽
1.添加接口:IDragHandler, IEndDragHandler, IBeginDragHandler, ICanvasRaycastFilter
分别为拖拽,结束拖拽,开始拖拽,射线检测
2.SetParent()设置父子关系
using System.Collections;
using System.Collections.Generic;
using
Unity
Engine;
using
Unity
Engine.EventSystems;//事件
public class My
//这两个意义未知
public const float kEpsilon = 1E-05F;
public const float kEpsilonNormalSqrt = 1E-15F;
public float x;
1. 零向量 [0,0,0]2. 负向量一个向量的负向量长度与这个向量的长度是相等的,负向量是这个向量的反向量
v + -v = -v + v = 0
3. 向量大小、长度、模 二维向量![height=”20” width=
![这里写图片描述](https://img-blog.csdn.net/20180613185425607?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9rdW56aGFuZw...
float x =
vector
3.magnitude; 计算向量长度
Vector
3 aaa =
vector
3.normalized; 将向量标准化
Vector
3 V1 =
Vector
3.zero;
Vector
3 V2 =
Vector
3.up;
Vector
3 V3 =
Vector
3.forward;
Vector
3 V4 =
Vector
3.right;
De...
Representation of 3D
vector
s and points.
表示3D的向量和点。
This structure is used throughout
Unity
to pass 3D positions and directions
向量(
Vector
3)
在虚拟的游戏世界中,3D数学决定了游戏,如何计算和模拟出开发者以及玩家看到的每一帧画面。学习基础的3D数学知识可以帮主用户对游戏引擎产生更深刻的了解。向量定义:既有大小又有方向的量叫做向量。在空间中,向量用一段有方向的线段来表示。应用十分广泛,可用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察方向、刚体受到的力等都是向量。因此向量是物理、动...