四元数的应用

这篇博客探讨了Unity3D中的旋转表示,指出90度和450度被视为相同。博主通过代码示例展示了如何使用Quaternion.Slerp进行平滑旋转,并利用LookRotation方法实现朝向目标的旋转。此外,还介绍了Transform.LookAt的自定义实现MyLookAt。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同一旋转表示不唯一指的是90和450是一样的度数
万向节死锁看百度解释
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将物体从A看向B

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson11 : MonoBehaviour
{
    public Transform testObj;

    public Transform target;
    public Transform A;
    public Transform B;

    private Quaternion start;
    private float time;

    public Transform lookA;
    public Transform lookB;
    // Start is called before the first frame update
    void Start()
    {
        #region 知识点一 单位四元数
        print(Quaternion.identity);
        //testObj.rotation = Quaternion.identity;

        Instantiate(testObj, Vector3.zero, Quaternion.identity);
        #endregion

        #region 知识点二 插值运算
        start = B.transform.rotation;
        #endregion

        
    }

    // Update is called once per frame
    void Update()
    {
        //无限接近 先快后慢
        A.transform.rotation = Quaternion.Slerp(A.transform.rotation, target.rotation, Time.deltaTime);

        //匀速变化 time>=1到达目标
        time += Time.deltaTime;
        B.transform.rotation = Quaternion.Slerp(start, target.rotation, time);


        #region 知识点三 LookRotation
        //Quaternion q = Quaternion.LookRotation(lookB.position - lookA.position);
        //lookA.rotation = q;
        lookA.MyLookAt(lookB);
        #endregion
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值