Her bir montaj Roblox Motoru'nda tek bir sert cisim ile ilişkilidir. Her sert cismin konumu ve hızı, nerede bulunduğunu ve ne kadar hızlı hareket ettiğini tanımlar ve motorun birincil görevlerinden biri, her montajın konumlarını ve hızlarını güncellemektir.
Montajlar, arabalar veya uçaklar gibi mekanizmalar oluşturmak için mekanik kısıtlamalar ve hareket kısıtlamaları ile birleştirilebilir. Bir mekanizmadaki montaj ve kısıtlama sayısı arttıkça, mekanizmanın simülasyonu için gereken süre de artar. Neyse ki, uyku sistemi motorun hareket etmeyen montajların simülasyonunu atlayabileceğini belirlediğinde bu artış dengelenir.
Uyku durumları
Her montaj üç durumdan birinde olabilir: uyanık, uyku veya uyku kontrolü.
Uyanık
Bir uyanık montaj hareket ediyor veya hızlanıyor ve bu nedenle simüle ediliyor. Montajlar, uyku ve uyku kontrolü durumlarından ve ek uyandırma durumları ile bu duruma geçer.
Uyku
Bir uyku montajı ne hareket ediyor ne de hızlanıyor ve bu nedenle simüle edilmiyor.
Bir montajın hareket etmeyen olduğu, doğrusal hızı ve dönme hızını kontrol ederek belirlenir. Eğer doğrusal hızı Doğrusal Hız eşiğinden daha az ve dönme hızı Dönme Hızı eşiğinden daha az ise, montaj hareket etmeyen olarak kabul edilir.
Bazı durumlarda, sadece hareket etmeme kontrolü, bir montajın yanlış bir şekilde uyku durumuna girmesine neden olabilir. Örneğin, bir top dikey olarak fırlatıldığında, maksimum yüksekliğine ulaştıkça hızı sıfıra yaklaşır ve bu da onun uykuya geçmesi ve bir daha asla düşmemesi için bir aday haline getirir. Bu tür durumları ele almak için motor, bir montajın doğrusal ivmesi veya dönme ivmesi Doğrusal İvme ve Dönme İvmesi eşiklerinden daha büyükse, montajın uykuya geçmesini engeller.
Uyku kontrolü
En az bir uyanık komşu montaj ile bir kısıt paylaşan hareket etmeyen bir montaj, uyku kontrolü durumuna geçer ve simüle edilmez. Her dünya adımında, bir uyku kontrol montajı şu koşulları kontrol eder:
- doğrusal ivmesi Uyanma Doğrusal İvmesi eşiğinden büyük mü.
- dönme ivmesi Uyanma Dönme İvmesi eşiğinden büyük mü.
- Bir komşu montajın doğrusal hızı Komşu Doğrusal Hız eşiğinden büyük mü.
- Bir komşu montajın dönme hızı Komşu Dönme Hızı eşiğinden büyük mü.
Bu koşullardan herhangi biri doğruysa veya ek uyandırma durumları altında, uyku kontrol montajı uyanık durumuna geçer.
Eşik referansı
Aşağıdaki tablo, bir montajın hareket edip etmediğini veya hızlanıp hızlanmadığını belirlemek için kullanılan çeşitli hız ve ivme eşiklerini sağlar.
| Eşik | Değer | Durum değişikliği |
|---|---|---|
| Doğrusal Hız | 0.33 studs/s | uyanık ⟩ uyku |
| Dönme Hızı | 0.42 studs/s | uyanık ⟩ uyku |
| Doğrusal İvme | 0.24 studs/s² | uyanık ⟩ uyku |
| Dönme İvmesi | 0.24 studs/s² | uyanık ⟩ uyku |
| Komşu Doğrusal Hız | 0.48 studs/s | uyku kontrolü ⟩ uyanık |
| Komşu Dönme Hızı | 0.59 studs/s | uyku kontrolü ⟩ uyanık |
| Uyanma Doğrusal İvmesi | 16.9 studs/s² | uyanık ⟩ uyku |
| Uyanma Dönme İvmesi | 16.9 studs/s² | uyanık ⟩ uyku |
Dönme hızı ve ivme eşikleri, montajın içindeki tüm parçaları içeren montaj sınırlayıcı küresinde (bir montajdaki tüm parçaları içeren bir küre) bulunan bir noktanın hızı ve ivmesini yansıtır.
Aktüatörlü eklemler
Bazen geliştiriciler, bağlı parçaları hareket ettirmek için bir aktüatörlü eklem kullanarak çok yavaş hareket etmek isterler; bu, bağlı parçalara kuvvet veya hareket uygulayan bir kısıtlamadır, örneğin HingeConstraint kullanarak Motor. Bu senaryoları desteklemek için, aktüatörlü eklemlere bağlı montajlar daha katı bir uyku hızı eşiği kullanır. Bu, bu montajların uykuya geçme zamanını geciktirir ve yavaş, kontrollü hareketin fizik sisteminin onları erken uykuya geçirmesini engeller.
Aşağıdakiler aktüatörlü eklem olarak kabul edilir:
| Kısıtlama | Konfigürasyon | Gerekli sıfırdan büyük özellikler |
|---|---|---|
| AlignOrientation | RigidityEnabled = false | |
| AlignPosition | RigidityEnabled = false | |
| AngularVelocity | — | |
| AnimationConstraint | IsKinematic = false | |
| CylindricalConstraint | ActuatorType = Motor | |
| ActuatorType = Servo | ||
| CylindricalConstraint | AngularActuatorType = Motor | |
| AngularActuatorType = Servo | ||
| HingeConstraint | ActuatorType = Motor | |
| ActuatorType = Servo | ||
| LinearVelocity | VelocityConstraintMode = Line |
|
| VelocityConstraintMode = Plane | ||
| VelocityConstraintMode = Vector | ||
| PrismaticConstraint | ActuatorType = Motor | |
| ActuatorType = Servo | ||
| RopeConstraint | WinchEnabled = true |
Ek uyandırma durumları
uyku kontrolü ve uyku durumlarında belirtilen durumların yanı sıra, bir montaj uyanık durumuna geçer:
1 studs/s hızla hareket eden başka bir montaj ile çarpıştığında.
Montaj içindeki herhangi bir BasePart'ın fizik ile ilgili özelliği değiştiğinde, bunlar dahil:
Montaj içindeki herhangi bir BasePart'a ApplyImpulse(), ApplyImpulseAtPosition() veya ApplyAngularImpulse() ile sıfırdan büyük bir darbe uygulandığında.
Montajı etkileyecek şekilde Workspace üzerinde herhangi bir fizik ile ilgili özelliğin değişmesi, bunlar dahil:
Montaj içindeki bir BasePart'a bağlı bir Attachment ile yeni bir Constraint oluşturulduğunda.
Montaj içindeki bir BasePart'a bağlı bir Attachment ile bir Constraint için herhangi bir özellik değiştiğinde.
Montaj içindeki bir BasePart'a bağlı bir Motor için CurrentAngle özelliği değiştiğinde.
Montaj, oturan bir oyuncu karakterine sahip bir VehicleSeat içerdiğinde.
Montaj, bir Explosion'ın BlastRadius içinde olduğunda.
Hata ayıklama görselleştirmesi
Oyun testi sırasında, 3D görünüm alanının sağ üst köşesindeki Görselleştirme Seçenekleri widget'ından Uyanık parçaları açarak montaj uyku durumlarını görselleştirebilirsiniz.

Etkinleştirildiğinde, simüle edilen parçalar mevcut uyku durumlarına göre çizgi ile belirtilir; uyanık parçalar kırmızı, uyku kontrolü parçalar turuncu, ve uyku parçalar ise belirtilmemiştir.