Sistema di sonno

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Ogni assemblaggio in Roblox Engine corrisponde a un singolo corpo rigido .La posizione e la velocità di ciascun corpo rigido descrivono dove si trova e quanto velocemente si muove, e una delle principali attività del motore è aggiornare le posizioni e le velocità di ciascuna assemblaggio.

Le assemblie possono essere connesse insieme a vincoli meccanici e vincoli mover per formare meccanismi come automobili o aerei.Mentre aumenta il numero di assemblaggi e vincoli in un meccanismo, aumenta anche il tempo richiesto per simulare il meccanismo.Fortunatamente, questo aumento viene compensato quando il sistema di sonno determina che il motore può saltare la simulazione delle assemblaggi non in movimento.

Stati di sonno

Ogni assemblaggio può essere in uno dei tre stati: sveglio , controllo del sonno o dormire .

Sveglio

Un'assemblata risvegliata è in movimento o accelerazione e quindi viene simulata.Le assemblie entrano in questo stato da situazioni descritte in controllo del sonno e sonno, nonché situazioni di veglia aggiuntive.

Controllo del sonno

Un'assemblaggio non mobile che condivide una restrizione con almeno una assemblaggio vicina attiva viene messo nello stato di controllo del sonno e non viene simulato.Ad ogni passo del mondo, un'assemblata di controllo del sonno controlla se:

Se una qualsiasi di queste condizioni è vera, o sotto qualsiasi delle situazioni di veglia aggiuntive , l'assemblaggio di controllo del sonno entra nello stato veglia.

Dormire

Un'assemblaggio di sonno non si muove né si accelera e quindi non viene simulato.

Un'assemblaggio è determinato a essere non mobile controllando la sua deviazione posizione , calcolata come la deviazione massima dalla posizione media del punto più lontano dal suo centro di massa nell'ultimo set di passi mondiali.Se questa deviazione è maggiore della soglia di spostamento Displacement, l'assemblaggio entra nello stato .

In alcuni casi, controllare semplicemente per non movimento causerebbe l'ingresso errato di un'assemblaggio nello stato di riposo.Ad esempio, se una palla viene lanciata direttamente in alto, la sua posizione cambia a malapena per una serie di passi mondiali mentre si avvicina alla sua altezza massima, rendendola un candidato a dormire e mai ricadere.Per gestire tali casi, il motore monitora se il prodotto dell'accelerazione e dell'attuale dimensione del tempo di esecuzione dell'assemblaggio supera la soglia Velocità lineare e/o Velocità angolare.

Riferimento alla soglia

La seguente tabella fornisce i diversi limiti di spostamento e velocità utilizzati per determinare se un'assemblaggio si sta muovendo o accelerando.

SogliaValoreCambio di stato
Spostamento del vicino0.01 metricontrollo del sonno > sveglio
Velocità lineare del vicino0.2 borchie/scontrollo del sonno > sveglio
Velocità angolare del vicino0,2 radiani/scontrollo del sonno > sveglio
Disposizione0,001 borchiedormiresveglio
Velocità lineare0.1 borchie/sdormiresveglio
Velocità angolare0,1 radiani/sdormiresveglio

Situazioni di risveglio aggiuntive

Oltre alle situazioni descritte in controllo del sonno e sonno, un'assemblata entra nello stato sveglio quando:

Debug visualizzazione

Durante il test di gioco, puoi visualizzare gli stati di sonno di assemblaggio attivando parti sveglie dal widget Opzioni di visualizzazione nell'angolo superiore destro della finestra3D.

A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.

Una volta abilitato, le parti simulate saranno delineate dal loro stato di sonno attuale, con parti risvegliate in rosso, parti controllo del sonno in arancione e parti dormenti non delineate.

Parti simulate evidenziate dal colore che rappresenta il loro stato di sonno attuale