本文最后更新于15 天前,其中的信息可能已经过时,如有错误请留言
Vector3
project
Declearation
public static Vector3Project(Vector3vector, Vector3onNormal)
ProjectOnPlane
public static Vector3 ProjectOnPlane (Vector3 vector, Vector3 planeNormal);
switch (planeNormal)
{
case PlaneNormalDic.X_Normal:
planeNormalDicV3 = transform.right;
break;
case PlaneNormalDic.Y_Normal:
planeNormalDicV3 = transform.up;
break;
case PlaneNormalDic.Z_Normal:
planeNormalDicV3 = transform.forward;
break;
default:
break;
}
// looker.transform.LookAt(sign);
looker.transform.LookAt(sign);
// 指向目标的向量
var dir = target.position - transform.position;
// 投影向量
var pj = Vector3.ProjectOnPlane(dir, planeNormalDicV3);
// 相对本对象位置进行变化
sign.position = transform.position + pj;
Y方向向量作为第二个参数,即待投影平面的法向量:
X方向向量作为第二个参数
Animator
deltaposition
public Vector3 deltaPosition;
返回动画系统在上一帧中根据动画计算出的位移增量。
- 反映 Root Motion(根运动)的位移
- 在动画中(例如角色走路、跑步),骨骼根节点会产生位移。
deltaPosition
保存的就是 Animator 在上一帧动画里计算出的 这一帧角色的位移变化量。
- 配合 Root Motion 使用
- 如果启用了
Animator.applyRootMotion = true
,Unity 会自动把deltaPosition
应用到角色的Transform
上。 - 如果没有启用,你就可以手动读取
deltaPosition
,并用脚本自己控制角色移动逻辑。
- 如果启用了
Quaternion
LookRotation
public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
forward
(Vector3)
- 物体要“朝向”的前方方向向量(通常是目标位置 – 自己位置)。
- 注意:不能为零向量。
upwards
(Vector3, 可选, 默认是 Vector3.up)
- 指定物体的“上方向”。
- 用来避免物体发生翻转(比如计算摄像机朝向时保持正立)
Slerp
面线性插值(Spherical Linear Interpolation)。
插值轨迹在四元数单位球面上,保证了旋转的匀速过渡,不会像线性插值(Quaternion.Lerp
)那样在接近目标时速度变快或变慢。
public static Quaternion Slerp(Quaternion a, Quaternion b, float t);
输入
a
(Quaternion)- 插值的起始旋转。
b
(Quaternion)- 插值的目标旋转。
t
(float, 范围 0 ~ 1)- 插值系数:
0
→ 返回a
1
→ 返回b
0.5
→ 返回在旋转空间里a
与b
之间的中间旋转
- 插值系数:
返回值
Quaternion
- 一个在
a
和b
之间平滑插值的旋转结果。 - 采用球面插值(Spherical Linear Interpolation, SLERP)
- 一个在
Math
Mathf.Deg2Rad
Lerp
在两个数值之间进行 线性插值(Linear Interpolation)。注意Mathf的lerp是线性变化的不会像Quaternion的lerp忽快忽慢,这和四元数的特征有关。
public static float Lerp(float a, float b, float t);
Physics
Raycast
它从一个点沿某个方向发射一条射线,检测是否与任何 Collider 相交。
返回值(所有重载一致)
bool
:是否命中。- 如果使用带
out RaycastHit
的重载,命中时会填充RaycastHit hit
。
RaycastHit
常用字段:
collider
/rigidbody
/transform
point
(命中点世界坐标)normal
(命中表面法线)distance
(起点到命中点的距离)triangleIndex
(MeshCollider 且非 convex 时)
参数说明
origin
:起点(世界坐标)。direction
:方向(不必单位化,但建议normalized
;长度会影响“隐式距离”)。ray
:Ray
结构,等价于(origin, direction)
。maxDistance
:最远检测距离(默认Mathf.Infinity
)。layerMask
:图层掩码(默认DefaultRaycastLayers
,即遵循物理设置里默认能碰撞的层)。queryTriggerInteraction
:是否命中 Trigger:UseGlobal
(默认,跟随 Project Settings > Physics 中的 “Queries Hit Triggers”)Ignore
Collide