睡眠系統

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡。

每個 組件 在 Roblox 引擎中對應於一個單一的 剛體。每個剛體的位置和速度描述了它的位置和移動速度,而引擎的主要任務之一是更新每個組件的位置和速度。

組件可以通過 機械約束 和 移動約束 連接在一起,形成如汽車或飛機等機械裝置。隨著機械中組件和約束的數量增加,模擬該機械所需的時間也會增加。幸運的是,當 睡眠系統 確定引擎可以跳過對不移動組件的模擬時,這種增加會被抵消。

睡眠狀態

每個組件可以處於三種狀態之一:清醒、睡眠 或 檢查睡眠。

清醒

清醒 的組件正在移動或加速,因此會被模擬。組件從 睡眠 和 檢查睡眠 中的情況進入此狀態,以及 其他喚醒情況。

睡眠

睡眠 的組件既不移動也不加速,因此不會被模擬。

通過檢查其 線性速度 和 旋轉速度 來確定組件是否不移動。如果其線性速度低於 線性速度 閾值,且其旋轉速度低於 旋轉速度 閾值,則該組件被視為不移動。

在某些情況下,僅檢查不移動會導致組件錯誤地進入睡眠狀態。例如,如果一個球被直直地扔上去,當它達到最高點時,其速度接近零,這使它成為候選者進入睡眠而永遠不會掉下來。為了處理這種情況,當其 線性加速度 或 旋轉加速度 大於 線性加速度 和 旋轉加速度 閾值時,引擎會認為該組件正在加速,並會防止該組件進入睡眠。

檢查睡眠

與至少一個 清醒 的相鄰組件共享約束的非移動組件被放入 檢查睡眠 狀態,並且不會被模擬。在每個世界步驟中,檢查睡眠的組件檢查以下條件:

如果這些條件中的任何一個為真,或者在任何 其他喚醒情況 下,檢查睡眠的組件將進入 清醒 狀態。

閾值參考

以下表格提供了用於確定組件是否移動或加速的各種速度和加速度閾值。

閾值值狀態變更
線性速度0.33 studs/s清醒 ⟩ 睡眠
旋轉速度0.42 studs/s清醒 ⟩ 睡眠
線性加速度0.24 studs/s²清醒 ⟩ 睡眠
旋轉加速度0.24 studs/s²清醒 ⟩ 睡眠
相鄰線性速度0.48 studs/s檢查睡眠 ⟩ 清醒
相鄰旋轉速度0.59 studs/s檢查睡眠 ⟩ 清醒
喚醒線性加速度16.9 studs/s²清醒 ⟩ 睡眠
喚醒旋轉加速度16.9 studs/s²清醒 ⟩ 睡眠

旋轉速度和加速度閾值反映了位於組件邊界球體上的一點的速度和加速度(該球體包含組件中的所有部件),該點與組件一起剛性移動。

驅動關節

有時開發者希望使用 驅動關節 以非常慢的速度移動部件,這是一種施加力或運動以驅動連接部件的約束,例如使用 HingeConstraint 和 Motor。為了支持這些場景,連接到驅動關節的組件使用更嚴格的睡眠速度閾值。這延遲了這些組件進入睡眠的時間,允許緩慢、受控的運動,而不會讓物理系統過早地將它們置於睡眠狀態。

以下被視為驅動關節:

其他喚醒情況

除了在 檢查睡眠 和 睡眠 中概述的情況外,當組件:

調試可視化

在遊戲測試期間,您可以通過在 3D 視口的右上角的 可視化選項 小工具中切換 清醒部件 來可視化組件的睡眠狀態。

3D 視口的特寫,右上角顯示可視化選項按鈕。

啟用後,模擬的部件將根據其當前的睡眠狀態進行輪廓標記, 清醒 的部件用紅色標記, 檢查睡眠 的部件用橙色標記,而 睡眠 的部件則不進行標記。

根據其當前睡眠狀態用顏色標記的模擬部件
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。