常用旋转

2020-05-22  本文已影响0人  Albert_d37d

using UnityEngine;

using System.Collections;

/// <summary>

///

/// </summary>

public class QuaternionAPI : MonoBehaviour

{

    private void Start()

    { 

        Quaternion qt = transform.rotation;

        //1. 四元数  -->  欧拉角

        Vector3 euler = qt.eulerAngles;

        //2.欧拉角 --> 四元数

        Quaternion qt02 = Quaternion.Euler(0, 90, 0);

        //3.轴 / 角 旋转

        //transform.rotation = Quaternion.AngleAxis(30, Vector3.up);

        //transform.localRotation = Quaternion.AngleAxis(30, Vector3.up); 

    }

    public Transform target;

    private void Update()

    {

        //4. 注视旋转

        //Quaternion dir = Quaternion.LookRotation(target.position - transform.position);

        //transform.rotation = dir;

        //transform.LookAt(target.position);

        //5.Lerp 差值旋转  由快到慢

        //transform.rotation = Quaternion.Lerp(transform.rotation, dir, 0.1f);

        //6.RotateTowards    匀速旋转

        //transform.rotation = Quaternion.RotateTowards(transform.rotation, dir, 0.1f);

        //Quaternion dir = Quaternion.Euler(0, 180, 0);

        //transform.rotation = Quaternion.Lerp(transform.rotation, dir, 0.005f);

        ////7. 四元数计算角度差

        //if (Quaternion.Angle(transform.rotation, dir) < 30)

        //    transform.rotation = dir;

        //8. 从?到?的旋转

        transform.rotation = Quaternion.FromToRotation(Vector3.right, target.position - transform.position);

    }

}

上一篇 下一篇

猜你喜欢

热点阅读