Unity中的旋转的API解释和使用
Unity中关于旋转主要是有欧拉角和四元数两种方式,每种方式的简单介绍可以参考我之前写的总结。
时间不是很充裕,要看的东西很多,所以有别人写好的就不在重新总结了,直接借用别人的文章。
https://blog.csdn.net/wwlcsdn000/article/details/79421612
接下来,我们单独看这两种的方式的介绍。
欧拉角
下边这篇文章我感觉写的非常的好了,列举了欧拉角的解释以及对万向锁的更清晰的描述。
https://blog.csdn.net/ronintao/article/details/52236210
四元数
下边的这篇文章,写了四元数的各种理解和创建方式。
但是第一种,我感觉写的有问题,方向的判断的其中一种 前方上方矢量界定法 理解并不对
https://www.cnblogs.com/driftingclouds/p/6626183.html
案例里边是我的测试代码.
已经做好了详细的注释,场景中自行创建4个立方体去查看效果。
public class QuaternionAPI : MonoBehaviour
{
public Transform m_t1;
public Transform m_t2;
public Transform m_t3;
public Transform m_t4;
void Start ()
{
//前方上方矢量界定法的实际上方会重新计算
//他的脸朝向哪儿 他的头顶朝向哪儿 两个参数的意义 请注意如果给定两个参数先判断是否正交
//如果正交才需要对齐 不正交的话默认是模型空间的正上方Y轴 请注意这个相交的意义 主要是判断第二个参数和Z轴是否相交
//因为第二个是基于模型空间来讲
//第一个参数的对齐哪个方向是相对于世界空间来讲 第二个参数是定义哪个是向上的方向 是相对于模型空间来讲
//m_t1.transform.rotation = Quaternion.LookRotation(Vector3.forward, Vector3.up);
//m_t2.transform.rotation = Quaternion.LookRotation(Vector3.forward, new Vector3(0.5f, 0.5f, 0));
//m_t3.transform.rotation = Quaternion.LookRotation(Vector3.forward, new Vector3(0.5f, -0.5f, 0));
//m_t4.transform.rotation = Quaternion.LookRotation(Vector3.forward);
//m_t1.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), Vector3.up);
//m_t2.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), new Vector3(0, 0.5f, -0.5f));
//m_t3.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), new Vector3(0, 0.5f, 0.5f));
//m_t4.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f));
m_t1.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), Vector3.up);
m_t2.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), new Vector3(0.5f, 0.5f, 0));
m_t3.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f), new Vector3(-0.5f, 0.5f, 0));
m_t4.transform.rotation = Quaternion.LookRotation(new Vector3(0, 0.5f, 0.5f));
//旋转量的4种表示形式
//这些都是相对于世界空间来说
//Quaternion q1=Quaternion.Euler(90, 0, 0);//绕X轴旋转 90度
//Quaternion q2 = Quaternion.LookRotation(Vector3.down);//人朝向下方
//Quaternion q3 = Quaternion.AngleAxis(90,Vector3.right);//绕右边的轴 X轴旋转90度
//Quaternion q4 = Quaternion.FromToRotation(Vector3.up, Vector3.forward);//将上方 旋转到 前方
//Quaternion q1 = Quaternion.Euler(0, 90, 0);//绕Y轴旋转 90度 注意旋转的正方向
//Quaternion q2 = Quaternion.LookRotation(Vector3.right);//人朝向左方
//Quaternion q3 = Quaternion.AngleAxis(90, Vector3.up);//绕上边的轴 Y轴旋转90度
//Quaternion q4 = Quaternion.FromToRotation(Vector3.left, Vector3.forward);//将上方 旋转到 前方
//Quaternion q1 = Quaternion.Euler(0, 0, 0);
//Quaternion q2 = Quaternion.LookRotation(Vector3.forward);//人朝向左方
//showQ("q1",q1);
//showQ("q2",q2);
//showQ("q3",q3);
//showQ("q4",q4);
}
四元数的使用方式
https://jingyan.baidu.com/article/4ae03de3dbbac83eff9e6b00.html
https://blog.csdn.net/u014086857/article/details/51777112