Unity-剛體概述
剛體 (Rigidbody)?是實(shí)現(xiàn)游戲?qū)ο蟮奈锢硇袨榈闹饕M件。連接剛體后,對象將立即響應(yīng)重力。如果還添加了一個(gè)或多個(gè)__碰撞體__組件,則游戲?qū)ο髸虬l(fā)生碰撞而移動(dòng)。
由于剛體組件會接管附加到的游戲?qū)ο蟮倪\(yùn)動(dòng),因此不應(yīng)試圖借助腳本通過更改變換屬性(如位置和旋轉(zhuǎn))來移動(dòng)游戲?qū)ο?。相反,?yīng)該施加__力__來推動(dòng)游戲?qū)ο蟛⒆屛锢硪嬗?jì)算結(jié)果。
在某些情況下,可能希望游戲?qū)ο缶哂袆傮w,并讓剛體的運(yùn)動(dòng)擺脫物理引擎的控制。例如,可能希望直接從腳本代碼控制角色,但仍允許觸發(fā)器檢測角色(請參閱碰撞體主題下的_觸發(fā)器_)。腳本產(chǎn)生的這種非物理運(yùn)動(dòng)稱為_運(yùn)動(dòng)學(xué)_運(yùn)動(dòng)。剛體組件有一個(gè)名為?Is Kinematic?的屬性,該屬性可以讓剛體擺脫物理引擎的控制,并允許通過腳本以運(yùn)動(dòng)學(xué)方式來移動(dòng)剛體??梢酝ㄟ^腳本來更改?Is Kinematic?的值,從而為某個(gè)對象開啟和關(guān)閉物理引擎,但這會產(chǎn)生性能開銷,應(yīng)謹(jǐn)慎使用。
有關(guān)這些組件的設(shè)置和腳本選項(xiàng)的更多詳細(xì)信息,請參閱剛體和?2D 剛體參考頁面。
睡眠
當(dāng)剛體移動(dòng)速度低于規(guī)定的最小線性速度或轉(zhuǎn)速時(shí),物理引擎會認(rèn)為剛體已經(jīng)停止。發(fā)生這種情況時(shí),游戲?qū)ο笤谑艿脚鲎不蛄χ安粫俅我苿?dòng),因此將其設(shè)置為“睡眠”模式。這種優(yōu)化意味著,在剛體下一次被“喚醒”(即再次進(jìn)入運(yùn)動(dòng)狀態(tài))之前,不會花費(fèi)處理器時(shí)間來更新剛體。
在大多數(shù)情況下,剛體組件的睡眠和喚醒是透明發(fā)生的。但是,如果通過修改__變換__位置將靜態(tài)碰撞體(即,沒有剛體的碰撞體)移入游戲?qū)ο蠡蜻h(yuǎn)離游戲?qū)ο螅瑒t可能無法喚醒游戲?qū)ο?。這種情況下可能會導(dǎo)致問題,例如,已經(jīng)從剛體游戲?qū)ο笙旅嬉谱叩匕鍟r(shí),剛體游戲?qū)ο髸以诳罩?。在這種情況下,可以使用?WakeUp
?函數(shù)顯式喚醒游戲?qū)ο?。有關(guān)睡眠的更多信息,請參閱剛體和?2D 剛體組件頁面。