Mỗi tập hợp trong Roblox Engine tương ứng với một cơ thể cứng duy nhất.Vị trí và tốc độ của mỗi cơ thể cứng mô tả nơi nó được đặt và tốc độ di chuyển như thế nào, và một trong những nhiệm vụ chính của động cơ là cập nhật vị trí và tốc độ của mỗi lắp ráp.
Các tập hợp có thể được kết nối với những hạn chế về cơ học và những hạn chế về chuyển động để hình thành các cơ chế như xe hơi hoặc máy bay.Khi số lượng lắp ráp và hạn chế trong một cơ chế tăng lên, thời gian cần thiết để mô phỏng cơ chế cũng tăng lên.May mắn thay, tăng này được trừ khi khi hệ thống ngủ xác định rằng động cơ có thể bỏ qua việc mô phỏng các tập hợp không di chuyển.
Trạng thái ngủ
Mỗi lắp ráp có thể ở trong một trong ba trạng thái: thức dậy , kiểm tra giấc ngủ hoặc ngủ .
Đánh thức
Một lắp ráp thức dậy đang di chuyển hoặc tăng tốc, và do đó được mô phỏng.Các tập hợp vào trạng thái này từ các tình huống được mô tả trong kiểm tra giấc ngủ và ngủ, cũng như tình huống thức dậy bổ sung .
Kiểm tra giấc ngủ
Một lắp ráp không di chuyển chia sẻ một hạn chế với ít nhất một lắp ráp lân cận thức dậy được đưa vào trạng thái kiểm tra giấc ngủ và không được mô phỏng.Trong mỗi bước thế giới, một lắp ráp kiểm tra giấc ngủ kiểm tra xem:
- Vị trí sai lệch của một lắp ráp liền kề lớn hơn giới hạn Neighbor Displacement .
- Sản phẩm của sự gia tốc của một lắp ráp lân cận và thời gian bước hiện tại lớn hơn giới hạn Neighbor Angular Velocity và/hoặc Neighbor Linear Velocity .
Nếu bất kỳ điều kiện nào trong số này là đúng, hoặc trong bất kỳ tình huống thức dậy bổ sung nào , tập hợp kiểm tra giấc ngủ sẽ vào trạng thái thức dậy .
Ngủ
Một lắp ráp ngủ không di chuyển hoặc tăng tốc và do đó không được mô phỏng
Một lắp ráp được xác định là không di chuyển bằng cách kiểm tra sai lệch vị trí của nó , tính là sai lệch tối đa từ vị trí trung bình của điểm xa nhất từ trung tâm khối lượng của nó trong bộ bước thế giới gần đây nhất .Nếu sai lệch này lớn hơn giới hạn di chuyển, thì lắp ráp sẽ vào trạng thái thức dậy.
Trong một số trường hợp, chỉ cần kiểm tra không di chuyển sẽ khiến một lắp ráp không chính xác vào trạng thái ngủ.Ví dụ, nếu một quả bóng được ném thẳng lên, vị trí của nó gần như không thay đổi cho một số bước thế giới khi nó tiếp cận độ cao tối đa, làm cho nó trở thành ứng cử viên ngủ và không bao giờ rơi xuống.Để xử lý các trường hợp như vậy, động cơ theo dõi xem sản phẩm của tốc độ gia tốc và kích thước thời gian hiện tại của lắp ráp có vượt quá ngưỡng Tốc độ dọc và/hoặc Tốc độ góc.
Tham chiếu ngưỡng
Bảng sau cung cấp các ngưỡng di chuyển và tốc độ khác nhau được sử dụng để xác định xem liệu một lắp ráp có di chuyển hoặc tăng tốc hay không.
Điểm tụt mức | Giá trị | Thay đổi trạng thái |
---|---|---|
Di chuyển hàng xóm | 0.01 đinh tán | kiểm tra giấc ngủ > thức dậy |
Tốc độ song song của hàng xóm | 0.2 đinh tán/giây | kiểm tra giấc ngủ > thức dậy |
Tốc độ góc hàng xóm | 0.2 radian/giây | kiểm tra giấc ngủ > thức dậy |
Di chuyển | 0.001 đinh tán | ngủ ⟩ thức dậy |
Tốc độ song song | 0.1 đinh tán/giây | ngủ ⟩ thức dậy |
Tốc độ góc cạnh | 0.1 radian/giây | ngủ ⟩ thức dậy |
Tình huống thức dậy bổ sung
Ngoài những tình huống được mô tả trong kiểm tra giấc ngủ và ngủ, một tập hợp bước vào trạng thái thức dậy khi:
Nó va chạm với một lắp ráp khác.
Bất kỳ tính chất vật lý nào liên quan đến bất kỳ BasePart bên trong lắp ráp thay đổi, bao gồm:
Một xung không bằng không được áp dụng cho bất kỳ BasePart bên trong lắp ráp thông qua ApplyImpulse() , ApplyImpulseAtPosition() hoặc ApplyAngularImpulse() .
Bất kỳ thay đổi tính chất vật lý nào trên Workspace có thể ảnh hưởng đến lắp ráp, bao gồm:
Một cái mới Constraint được tạo với một Attachment được gán cho một BasePart bên trong tập hợp.
Bất kỳ thay đổi chỉ số nào cho một Constraint với một Attachment mà được gán cho một BasePart trong tập hợp.
Thay đổi thuộc tính CurrentAngle cho một Motor được kết nối với một BasePart bên trong tập hợp.
Bộ lắp chứa một VehicleSeat với một nhân vật người chơi ngồi.
Lắp ráp nằm trong BlastRadius của một Explosion .
Xác định lỗi hình ảnh
Trong quá trình thử nghiệm chơi, bạn có thể hiển thị các trạng thái ngủ lắp ráp bằng cách chuyển sang phần thức tỉnh từ widget Tùy chọn hiển thị ở góc trên bên phải của cửa sổ 3D.

Một khi được bật, các bộ phận giả lập sẽ được mô tả bởi tình trạng ngủ hiện tại của chúng, với thức dậy các bộ phận được vẽ bằng màu đỏ, kiểm tra giấc ngủ các bộ phận được vẽ bằng màu cam, và ngủ các bộ phận không được vẽ.