unity LookRotation LookAt 功能详解
官方解释:
Quaternion.LookRotation
public static Quaternion LookRotation (Vector3 forward, Vector3 upwards= Vector3.up);
参数
| forward | 要查看的方向。 |
| upwards | 定义向上方向的向量。 |
描述
使用指定的 forward 和 upwards 方向创建旋转。
Z 轴将与forward对齐,X 轴与 forward 和 upwards 之间的差积对齐,Y 轴与 Z 和 X 之间的差积对齐。
如果 forward 或 upwards 向量值为零,则返回恒等。 \如果 forward 和 upwards 共线,则返回恒等。
-----------------------------------------------------------------------------------------------------------------------------------------
Quaternoin 的旋转函数
static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
Transform 中的 旋转函数
void LookAt(Transform target, Vector3 worldUp = Vector3.up);
void LookAt(Vector3 worldPosition, Vector3 worldUp = Vector3.up);
三个函数的使用方法 基本类似.
都有两个参数,第一个参数的目的是为了 提供 z轴方向 (目标方向). 第二个参数提供了 X轴方向(站立朝向).
z轴 需要与 目标方向 一致.
X轴方向 与 站立朝向垂直. 也就是 站立朝向 提供了一个 垂直与自身的平面. x轴一定会落在这个平面上.
LookRotation 的两个参数比较 好理解,和上面的解释相对应, 这个函数返回值 是一个Quaternion. 这个值是符合两个参数的一个新的旋转值.
LookAt Transform 的 Z 方向就是 forward . worldPosition 方向 就是 forward. 这两个函数直接把 新的朝向赋值给了 本身的 Transform. 就是LookRotation 的一个升级情况.
这三个函数 的第二个参数 都有一个默认的朝向.如果不填就都是 010, 世界坐标中的 +Y 方向.
官方提供的 平滑看相 目标的 示例:
摄像机平滑锁定目标示例:
var target : Transform;
var damping = 6.0;
// 最后放在 lateUpdate 之中, 以确保 所有 移动已经执行完成.
LateUpdate(){
...
var rotation = Quaternion.LookRotation(target.position - transform.position); // 获得 目标方向
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping); // 差值 趋向目标
....
}
浙公网安备 33010602011771号