unity中關於角度的函式

2021-07-05 15:55:20 字數 1915 閱讀 6470

尤拉角和四元數一直不是太懂,所以最近補一補,先搞清楚應用方面吧

public void toangleaxis(out float angle, out vector3 axis);

其中引數angle為旋轉角;引數axis為軸向量。

將物件現在的角度轉換成軸向與旋轉角。

void angleaxis(float angle,vector3 axis)

通過旋轉角與軸向量來確定物件的角度

void setfromtorotation(vector3 fromdirection,vector3 todirection)

var a:vector3;

var b:vector3;

var q:quaternion;

var headupdir:vector3;

q.setfromtorotation(a,b);

transform.rotation=q;

headupdir=transform.transformdirection(vector3.forward);

輸入:a=vector3(0,0,1); b=vector3(0,1,0)//把z軸朝向y軸

輸出: q=(-0.7,0,0,0.7); headupdir=(0,1,0)

意思是如果定義乙個四元數,那麼通過呼叫這個函式則可返回這個旋轉過程。

void setlookrotation (vector3 view ,vector3 up = vector3.up)

這個函式建立乙個旋轉使z軸朝向view y軸朝向up。

同樣是quaternion類裡面的

四元數運算子也被過載了

dot為點乘

quaternion.eulerangles 尤拉角

返回表示旋轉的尤拉角度。

表示旋轉的角度,繞z軸旋轉euler.z度,繞x軸旋轉euler.x度,繞y軸旋轉euler.y度(這樣的順序)。

//建立乙個旋轉

var rotation = quaternion.identity;

//繞y軸,指定乙個30度旋轉角

rotation.eulerangles = vector3(0, 30, 0);

//列印繞y軸的旋轉角度

print(rotation.eulerangles.y);

quaternion.lerp

這個就不講了, 插值。

值得注意的是,lerp與slerp的區別在於slerp是勻角速度,而lerp是線性。

quaternion.rotatetowards

static function rotatetowards (from : quaternion, to : quaternion, maxdegreesdelta : float) : quaternion

這基本上和quaternion.slerp相同,但是這個函式的角速度永遠不會超過maxdegreesdelta。負的maxdegreesdelta值將使旋轉遠離to

quaternion.inverse 求反

static function inverse (rotation : quaternion) : quaternion

就是返回反向旋轉過程

quaternion.angle 角

static function angle (a : quaternion, b : quaternion) : float

返回a和b兩者之間的角度。

quaternion.euler 尤拉角

返回乙個旋轉角度,繞z軸旋轉z度,繞x軸旋轉x度,繞y軸旋轉y度(像這樣的順序)。

static function euler (x : float, y : float, z : float) : quaternion

var rotation = quaternion.euler(0, 30, 0);

關於Unity中變數和函式的定義

變數 1.勻速運動的物體都要記得定義乙個speed速度變數 2.不斷產生很多相同物體的事件要記得定義時間生成物體的間隔rate,並且有乙個一達到rate的值就清0的累加時間變數,累加時間變數是通過time.deltatime來累加的。3.bool變數的定義 有時候不知道要定義哪些bool變數 其實我...

關於unity中的SetActive

gameobject cube public button play1 void start void btn 用canvasgroup元件的有乙個問題,ui不可重疊,之前那麼做正好我的ui沒重疊,當然如果要改變ui的透明度的話做一些漸變效果的話canvasgroup元件還是可的。若父物體為fals...

Unity獲取動畫的角度值

首先需要明確幾個概念,乙個動畫其實是n個物體的m個屬性值的變換,即n m個波形,獲取裡面的值需要每個波形去遍歷,使用api獲取波形第i幀的值,如下 animationcurve animationcurve animationutility.geteditorcurve animationclip,...