LookAt() 与 LookRotation() 的区别? 个人理解 一般来说 角色冲着z轴方向 这样lookat的时候 他就直接冲着目标点了。 LookAt 是将游戏对象的z轴指向参数所表示的那个点 LookRotation 是将游戏对象的z轴指向参数所表示的向量的方向,使我们的物体朝向我们希望的方向,是朝向一个向量。 Quaternion Quaternion.LookRotation(Vector3 forward, Vector3 upwards) (+ 1 重载) LookRotation的含义就是,计算让Z轴对齐forward,让y轴对齐upward ,也就是让x轴和upward垂直所需要的旋转四元数
Quaternion q1 = new Quaternion(1,2,3,4); Debug.Log(“创建一个四元数:”+q1);//输出:(1.0, 2.0, 3.0, 4.0)
Vector3 eulerAngle = q1.eulerAngles; Debug.Log(“四元数转欧拉角:” + eulerAngle);//输出:(352.3, 47.7, 70.3) Quaternion q2 = Quaternion.Euler(eulerAngle); Debug.Log(“欧拉角转四元数:” + q2);//输出:(-0.2, -0.4, -0.5, -0.7) Vector3 axis; float angle; q1.ToAngleAxis(out angle, out axis); Debug.Log(“四元数转轴向角,旋转角度:” + angle+“旋转轴:”+axis);//输出:旋转角度:86.17744旋转轴:(0.3, 0.5, 0.8) Quaternion q3= Quaternion.AngleAxis(angle, axis); Debug.Log(“轴向角转四元数:”+q3);//输出:(0.2, 0.4, 0.5, 0.7) //测试 a.rotation = q1; b.rotation = q2; c.rotation = q3; //结果:a,b,c的旋转相同,inspector面板里的Rotation都是(-7.662, 47.726, 70.346)
想知道自己的模型在世界坐标里的朝向向量 self.transform.forward 很方便吧 Quaternion.Dot Quaternion这个类非常有意思 他也有一个Dot Vector也有一个Dot
|