Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()
生活随笔
收集整理的這篇文章主要介紹了
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()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】Immutable.js : 操作
- 下一篇: 携带cookie进行数据请求