為物件加入剛體後會為物件附加物理的特性,任何會動的遊戲物件都需要用到剛體
製作2D遊戲則使用Rigidbody2D
Dynamic(動態):預設的型態,用在物理作用模擬下會移動的物件,會受到重力、碰撞等物理條件的影響,與所有類型的剛體碰撞,最耗效能的類型。
Kinematic(運動學):不會受到物理作用力影響,但是可以對其他剛體發揮物理影響,對系統資源要求較低。僅能碰撞Dynamic物件,無法碰撞Kinematic及Static物件。
Static(靜態):在物理作用模擬下不會移動,可以視其爲一個具有無限質量、不可移動的物體,最不耗系統資源。
可以放入自訂的Physic 2D物理材質,用來調整物件碰撞時發生的摩擦和彈性。
是否應用物理模擬的開關,關閉時任何附加的Collider2D的碰撞和Joint2D的約束效果都不會參與物理模擬。
依據物件的碰撞器外形大小去自動計算物件的質量,勾選後無法改動Mass欄位的數值
Mass:物件的質量,會影響碰撞速度。
Linear Drag:物件移動時的阻力,影響物件在沒有發生物理行為下停止移動的速度。
Angular Drag:物件旋轉時的阻力,影響遊戲物件停止旋轉的速度。
Gravity Scale:重力的大小,影響物體承受重力的程度。
碰撞偵測的模式
Discrete:預設,為間段性偵測碰撞
Continuous:為連續性偵測碰撞,能防止靜態物件被快速移動的物體穿透
Continuous Dynamic:動態連續,適用於快速移動的物體防止穿透
決定rigidbody要不要啟用,在物件靜止時就會進入休眠減少不必要的運算,只有再次被改變屬性,或是透過事件產生改變才會再次啟用。有以下幾種模式:
Never Sleep 一直都啟用,不進入休眠
Start Awake 開始時啟用
Start Asleep 開始時休眠
能夠改善不規則位移,如果物件運動看起來有不明抖動可以打開這個進行修正。
None:預設為無
Interpolate:根據前一幀的位置來做平滑差值
Extrapolate:預測下一幀的位置來做平滑差值
設定剛體的移動和旋轉限制
Freeze position XY:限制X軸或Y軸位移,可以做成平移或垂直移動。
Freeze rotation Z :限制Z軸轉動,人物移動時就不會因旋轉而倒在地上。
參考資料
https://docs.unity3d.com/2022.2/Documentation/Manual/Rigidbody2D-Static.html
https://www.twblogs.net/a/5b8cfcc82b717718833874f1
https://www.slideshare.net/sshiouwu/unity-2di-179107075