Unity重要库函数
本文最后更新于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;

返回动画系统在上一帧中根据动画计算出的位移增量

  1. 反映 Root Motion(根运动)的位移
    • 在动画中(例如角色走路、跑步),骨骼根节点会产生位移。
    • deltaPosition 保存的就是 Animator 在上一帧动画里计算出的 这一帧角色的位移变化量
  2. 配合 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);

输入

  1. a (Quaternion)
    • 插值的起始旋转。
  2. b (Quaternion)
    • 插值的目标旋转。
  3. t (float, 范围 0 ~ 1)
    • 插值系数:
      • 0 → 返回 a
      • 1 → 返回 b
      • 0.5 → 返回在旋转空间里 ab 之间的中间旋转

返回值

  • Quaternion
    • 一个在 ab 之间平滑插值的旋转结果。
    • 采用球面插值(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;长度会影响“隐式距离”)。
  • rayRay 结构,等价于 (origin, direction)
  • maxDistance:最远检测距离(默认 Mathf.Infinity)。
  • layerMask:图层掩码(默认 DefaultRaycastLayers,即遵循物理设置里默认能碰撞的层)。
  • queryTriggerInteraction:是否命中 Trigger
    • UseGlobal(默认,跟随 Project Settings > Physics 中的 “Queries Hit Triggers”)
    • Ignore
    • Collide
学习笔记如有侵权,请提醒我,我会马上删除
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇