在 Roblox 引擎中的每個 組合體 對應單個 剛體。位置和速度的每個剛體描述其位置和速度,並且是一個主要的引擎任務更新位置和速度的每個組合體。
組合件可以與 機械限制 和 移動器限制 連接在一起,以形成機制,例如汽車或飛機。當機器中的組合件數量和限制增加時,模擬機器所需的時間也會增加。幸運的是,這種增加是在 睡眠系統 決定發生非運動為semblages的模��
睡眠狀態
醒來
一個 醒來 組裝正在移動或加速,因此是在模擬中。 組裝從情況中進入此狀態,例如 睡眠檢查 和 睡眠 ,以及 2>額外醒來情況2>。
睡眠檢查
一個不會移動的裝置,與至少一個 醒來 的鄰近裝置共享約束,將放入 睡眠監視 狀態,並且不會模擬。在每個世界步驟中,睡眠監視裝置檢查:
- 鄰近組合體的 位置偏移 大於 鄰近移動 閾值。
如果其中任何一個條件是真的,或者在任何一個 額外的醒來情況 下,睡眠檢查組會進入 醒來 狀態。
睡眠
A 睡眠 組裝不會移動或加速,因此不會模擬。
如果檢查位置偏移,將決定其為非移動狀態,計算為點最遠離其中心點最大偏移值。如果此偏移值大於 位置 閾值,則為狀態 醒來 。
在某些情況下,只要檢查非移動即可導致裝配錯誤地進入睡眠狀態。例如,如果一顆球直接上升,其位置幾乎不會改變在一個世界步驟接近最大高度時,它變成睡眠狀態並且
門檻參考
下表提供各種移動和速度閾值,用於決定是否有移動或加速。
門檻 | 價值 | 狀態變更 |
---|---|---|
鄰居搬遷 | 0.01 英吋 | 睡眠檢查 ► ◊ 醒來</◊ |
鄰居線性速度 | 0.2 英吋/秒 | 睡眠檢查 ► ◊ 醒來</◊ |
鄰居角度速度 | 0.2 公尺/秒 | 睡眠檢查 ► ◊ 醒來</◊ |
位置 | 0.001 英吋 | 睡覺 ↡ ↡ ↡ ↡ ↡ |
直線速度 | 0.1 公尺/秒 | 睡覺 ↡ ↡ ↡ ↡ ↡ |
角度速度 | 0.1 公尺/秒 | 睡覺 ↡ ↡ ↡ ↡ ↡ |
額外的醒來情況
除了在 睡眠檢查 和 睡眠 中描述的情況外,一個組裝會在 醒來 狀態時進入 1>睡眠狀態1>:
它與另一個組合件碰撞。
任何物理相關屬性的任何 BasePart 內的裝配變更,包括:
在組裝中對任何 BasePart 內的 ApplyImpulse() 、 ApplyImpulseAtPosition() 或 1> Class.BasePart:ApplyAngularImpulse()|ApplyAngularImpulse()1> 添加非零 impulse
任何與物理相關的屬性變更在 Workspace 上,會影響裝配,包括:
新 Constraint 已建立,其中 Attachment 是對 BasePart 內的一個子集。
任何對 Constraint 的屬性變更,包括與 Attachment 相對應的內容,以及與 BasePart 相對應的內容。
組裝包含一個 VehicleSeat ,含有坐下的玩家角色。
裝配在 BlastRadius 的 Explosion 的內部。
Debugging 視覺化
在玩測中,您可以通過切換 目覺化選項 從 3D 視角窗上方右角的 Awake 零件 來視覺化裝配睡眠狀態。
啟用時,將以紅色顯示醒來狀態的零件,並且以橙色顯示睡眠狀態的零件,以及以 醒來 零件以下列出,以及以 睡眠檢查 零件以下列出,以及以 睡眠 零件未列出。