Unity基础——刚体
物理系統概述
剛體
①詳細信息
1.剛體【Rigidbody】是實現游戲對象的物理行為的主要組件,它讓游戲對象被物理引擎所控制,能通過力和扭矩來表現真實的物理表現效果。
2.使用剛體后,對象將立即響應重力。如果還添加了一個或多個碰撞體組件,則游戲對象會因為碰撞而發生移動;
3.不應試圖借助腳本通過改變變換屬性【比如位置、旋轉】來移動游戲對象,應該使用施加力的方式來推動游戲對象并讓物理引擎計算結果。
但是在某些情況下,希望游戲對象具有剛體,并且讓剛體的運動擺脫物理引擎的控制。例如,希望直接從腳本代碼控制角色,但仍允許觸發器檢測角色,即接受Collision/Trigger消息。這種由腳本產生的非物理運動叫做【kinematic motion】;
剛體組件有一個Is Kinematic的屬性,勾選它就能通過腳本以運動學方式來控制對象的運動;當標記為Is Kinematic時,對象不會受到碰撞、力或物理系統任何其他部分的影響,即意味著必須通過直接操作變換組件來控制對象。
4.剛體和操作變換組件的最大區別就是在于力的運用;
剛體可以接受力和扭矩,但是變換不能,對應的變換組件可以平移和旋轉;
向剛體施加力/扭矩實際上會改變對象的變換組件的位置和旋轉,這就是應該只使用其中一個組件的原因;如果直接操作了剛體的變換,在執行碰撞和其他操作時會出問題。
②父子化【Parenting】
當一個對象處于物理引擎的控制下,對象的移動方式在一定程度上獨立于其變換父對象的移動方式。
如果移動任何父物體,它們將會把剛體子物體對象拉到自己身邊。但是剛體仍然會因為重力而降落,并且會對碰撞事件做出反應。
③碰撞體
碰撞體是要與剛體一起使用才能實現碰撞的組件。
如果兩個剛體相互碰撞,且兩個對象都附加了碰撞體時,物理引擎才會計算碰撞。
無碰撞體的剛體將直接相互穿過對方。
注意
網格碰撞體通常不能相互碰撞,若網格碰撞體被標記為【Convex凸面體】,則可以與另一個網格碰撞體發生碰撞。典型的解決方案是對所有移動對象使用原始碰撞體,而對靜態背景對象使用網格碰撞體。
④連續碰撞檢測
連續碰撞檢測是一種阻止快速移動的碰撞體相互穿過的功能。
①使用Discreate碰撞檢測時,如果對象在一幀中位于某個碰撞體的一側,而在下一幀中已經穿過了碰撞體,這屬于彼此穿過的情況。因此Discreate【離散檢測】不適用于高速運動的物體;
②解決此問題,可在快速移動對象的剛體上啟用連續碰撞檢測,將碰撞檢測模式設置為Continuous可防止剛體穿過任何靜態(非剛體)網格碰撞體。
③Continuous Dynamic[動態連續檢測]:防止對象穿過所有靜態碰撞體【非剛體】以及設置為Continuous或Continuous Dynamic的剛體
④Continuous Speculative【推測式】
⑤選擇合適的大小
Cube默認大小恰好是1米,若對人類進行建模,請確保該模型在unity中的高度約為2米,即立方體高度兩倍。
總結
以上是生活随笔為你收集整理的Unity基础——刚体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D学习1--Unity基础
- 下一篇: Unity基础知识学习四,UI框架设计