Unity中关于旋转的API解释和使用

本文深入探讨Unity中旋转的实现方式,包括欧拉角和四元数的概念及其应用场景,并通过实例代码展示不同旋转方法的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#Unity中的旋转的API解释和使用
Unity中关于旋转主要是有欧拉角和四元数两种方式,每种方式的简单介绍可以参考我之前写的总结。
时间不是很充裕,要看的东西很多,所以有别人写好的就不在重新总结了,直接借用别人的文章。
https://blog.youkuaiyun.com/wwlcsdn000/article/details/79421612
接下来,我们单独看这两种的方式的介绍。
##欧拉角
下边这篇文章我感觉写的非常的好了,列举了欧拉角的解释以及对万向锁的更清晰的描述。
https://blog.youkuaiyun.com/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.youkuaiyun.com/u014086857/article/details/51777112

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值