Unity3D學習筆記之Rigidbody(剛體元件)
Rigidbody面板各屬性:
-
Mass(質量):單位kg
-
Drag(阻力)
-
Angular Drag(角阻力)
-
Use Gravity(開啟重力)
-
Is Kinematic(開啟動力學模式):開啟之後將不在受物理引擎的影響而只能通過Transform屬性來操作,這個選項適用於模擬平臺的移動或帶有鉸鏈關節連線剛體的動畫。
-
Interpolate(插值):
None:沒有插值。
Interpolate:內插值,基於前一幀的Transform來平滑的此次的Transform。
Extrapolate:外插值,基於後一幀的Transform來平滑的此次的Transform。
-
Collision Detection(碰撞檢測模式):
Discrete:預設選項,檢測場景中其他所有碰撞體進行碰撞檢測。
Continuous:連續碰撞檢測。此模式適用於那些需要與採用了連續動態碰撞檢測的物件相碰撞的物件。
Continuous Dynamic:連續動態檢測模式。
-
Constraints(束縛):
Freeze Position(位置凍結)
Freeze Rotation(角度凍結)
指令碼中控制剛體的常用方法:
-
AddForce:新增一個力到剛體,使剛體開始移動
-
AddForceAtPosition:施加在某一個點上的力,這將可能在物體上施加扭矩力
-
Addtorque:為剛體增加一個扭矩
-
IsSleeping:判斷剛體是否被休眠
-
MovePosition:移動剛體到某個位置
-
MoveRotation:使剛體旋轉到某個位置
-
Sleep:使剛體至少休眠一幀
-
WakeUp:使剛體終止休眠
-
GetPointVelocity:獲取剛體的絕對速度
-
GetRelativePointVelocity:獲取剛體相對於某點的速度
-
ResetInertiaTensor:重置慣性張量和旋轉
剛體物理學知識補充:
-
剛體:指在運動中和受力作用後,形狀和大小不變,而且內部各點的相對位置不變的物體。
-
慣性張量:描述剛體繞點旋轉的慣性大小
-
轉動慣量:描述剛體繞軸旋轉的慣性大小
-
慣性張量與轉動慣量的關係:
對於三維空間中任意一參考點 K與以此參考點為原點的直角座標系的慣性張量I可以表示為下面的3X3的矩陣
這裡,矩陣的對角元素 Ixx、Iyy、Izz分別為對於 x-軸、y-軸、z-軸的轉動慣量
注意事項:
-
操作一個物體可以操作其剛體或者Transform屬性,兩者選其一即可;
-
使用物理系統時可以通過在遊戲物件的剛體上新增AddForce()或者AddTorque()函式達到通過指令碼來新增作用力或扭矩力,來對剛體進行控制;
-
使用剛體元件也要同時使用碰撞器元件;
-
父子物件不應該同時具有剛體;
-
不應該縮放剛體的父級。
-
運動學剛體不受力、碰撞或關節控制,完全由動畫或程式碼(控制Transform屬性)驅動,但運動學剛體可以通過碰撞或關節影響其他剛體的運動。非運動學剛體則受力、碰撞或關節控制。