日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()

發布時間:2024/7/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

  四元數百度百科:  傳送門

  四元數官方文檔:  傳送門

  歐拉旋轉、四元數、矩陣旋轉之間的差異:  傳送門

  四元數轉換為歐拉角eulerAngles  官方文檔:  傳送門

  歐拉角轉換為四元數Euler  官方文檔:  傳送門

  

  Quaternion.LookRotation  官方文檔:傳送門

  LookRotation()根據對局部坐標軸的描述, 構造對應的代表旋轉程度的四元數

?

一、Transform中四元數和歐拉角

?

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Quaternion : MonoBehaviour {public Transform cube;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if (Input.GetKeyDown(KeyCode.Space)){//獲得游戲物體歐拉角 print(cube.eulerAngles);//獲得游戲物體四元數 print(cube.rotation);}} } Quaternion.cs

?

  歐拉角:方便開發者在控制面板上觀察游戲物體旋轉的角度,但旋轉軸固定

  四元數:旋轉軸可以是任意向量  傳送門

//獲得游戲物體歐拉角 print(cube.eulerAngles);//獲得游戲物體四元數print(cube.rotation);

?

?

?二、Quaternion.LookRotation  

  場景中創建一個Capsule作為玩家,Sphere作為敵人,給Capsule綁定Quaternion_Gary.cs腳本,要使玩家一致朝向敵人可以用LookRotation()來實現

?

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Quaternion_Gary : MonoBehaviour {public Transform player;public Transform enemy;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {//讓player前方向和dir方向保持一致Vector3 dir = player.position - enemy.position;player.rotation = Quaternion.LookRotation(dir);} } Quaternion_Gary

?

void Update () {//讓player前方向和dir方向保持一致Vector3 dir = player.position - enemy.position;player.rotation = Quaternion.LookRotation(dir);}

?

  有時以一幀的速度去讓玩家轉頭容易造成不好的體驗

  延緩轉頭速度緩慢,讓動畫看起來更平滑

?

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Quaternion_Gary : MonoBehaviour {public Transform player;public Transform enemy;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {//讓player前方向和dir方向保持一致Vector3 dir = player.position - enemy.position;Quaternion target = Quaternion.LookRotation(dir);player.rotation = Quaternion.Slerp(player.rotation,target,Time.deltaTime);} } Quaternion_Gary.cs

?

void Update () {//讓player前方向和dir方向保持一致Vector3 dir = player.position - enemy.position;Quaternion target = Quaternion.LookRotation(dir);player.rotation = Quaternion.Slerp(player.rotation,target,Time.deltaTime);}

?

轉載于:https://www.cnblogs.com/1138720556Gary/p/9941272.html

總結

以上是生活随笔為你收集整理的Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。