理解Unity中Quaternion.LookRotation的作用

1,157 阅读1分钟

这个函数的作用是使用指定的 旋转轴上方向 创建旋转

这是官方文档的说明(2019.4)

image-20220614083355653

这个说明当时看的我云里雾里, 差点没绕进去后面又查阅了一些资料重于理解了它的意思.

如图所示

image-20220614083138295

以2D为例_(由于是2D 所以物体的z轴也就是Vector3.forward)_, 实现一个 导弹飞行 的效果, 我们给物体一个右上方向的速度 Velocity ,接下来我们想让物体能沿着速度方向进行旋转,如何去做? 这就需要用到 Quaternion.LookRotation这个函数

想用这个函数, 我们就要获取到物体再Velocity方向时的 "上方" 向量, 也就是垂直于Velocity的向量,把它带入 Quaternion.LookRotation函数即可获取旋转的四元数

如何计算出Velocity的垂直向量? 这里用到了 Vector3.Cross 函数 即

Vector3.Cross(Vector3.forward, Velocity);

需要注意的是 Vector3.Cross的两个参数的顺序不同,返回的向量方向是不同的, 需要利用左手法则来判定

image-20220614090500128

完整代码

Vector3 upDir = Vector3.Cross(Vector3.forward, velocity);
transform.rotation = Quaternion.LookRotation(Vector3.forward, upDir);