Sistema di sonno

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

Ogni assemblaggio nel Roblox Engine corrisponde a un singolo corpo rigido. La posizione e la velocità di ogni corpo rigido descrivono dove si trova e con quale velocità si muove, e uno dei principali compiti del motore è aggiornare le posizioni e le velocità di ciascun assemblaggio.

Gli assemblaggi possono essere collegati tra loro con vincoli meccanici e vincoli di movimento per formare meccanismi come auto o aerei. Man mano che il numero di assemblaggi e vincoli in un meccanismo aumenta, aumenta anche il tempo necessario per simulare il meccanismo. Fortunatamente, questo aumento è compensato quando il sistema di sonno determina che il motore può saltare la simulazione degli assemblaggi non in movimento.

Stati di sonno

Ogni assemblaggio può trovarsi in uno dei tre stati: sveglio, dormiente o in-controllo-del-sonno.

Sveglio

Un assemblaggio sveglio è in movimento o in accelerazione e quindi viene simulato. Gli assemblaggi entrano in questo stato da situazioni descritte in dormiente e in-controllo-del-sonno, oltre a ulteriori situazioni di risveglio.

Dormiente

Un assemblaggio dormiente non è né in movimento né in accelerazione e quindi non viene simulato.

Un assemblaggio viene determinato come non in movimento controllando la sua velocità lineare e velocità rotazionale. Se la sua velocità lineare è inferiore alla soglia di Velocità Lineare e la sua velocità rotazionale è inferiore alla soglia di Velocità Rotazionale, l'assemblaggio è considerato non in movimento.

In alcuni casi, controllare semplicemente la mancanza di movimento potrebbe far entrare un assemblaggio nello stato dormiente in modo errato. Ad esempio, se una palla viene lanciata dritto verso l'alto, la sua velocità si avvicina a zero man mano che raggiunge la sua massima altezza, rendendola un candidato per il sonno e mai più per tornare giù. Per gestire tali casi, il motore considera un assemblaggio in accelerazione se la sua accelerazione lineare o accelerazione rotazionale sono superiori ai valori di soglia di Accelerazione Lineare e Accelerazione Rotazionale, rispettivamente, e impedirà all'assemblaggio di addormentarsi.

In-controllo-del-sonno

Un assemblaggio non in movimento che condivide un vincolo con almeno un assemblaggio sveglio viene messo nello stato di in-controllo-del-sonno e non viene simulato. In ogni passo del mondo, un assemblaggio in controllo del sonno verifica se:

Se una di queste condizioni è vera, o sotto una delle ulteriori situazioni di risveglio, l'assemblaggio in controllo del sonno passa allo stato sveglio.

Riferimento soglia

La seguente tabella fornisce le varie soglie di velocità e accelerazione utilizzate per determinare se un assemblaggio è in movimento o in accelerazione.

SogliaValoreCambiamento di stato
Velocità Lineare0.33 studs/ssvegliodormiente
Velocità Rotazionale0.42 studs/ssvegliodormiente
Accelerazione Lineare0.24 studs/s²svegliodormiente
Accelerazione Rotazionale0.24 studs/s²svegliodormiente
Velocità Lineare del Vicino0.48 studs/sin-controllo-del-sonnosveglio
Velocità Rotazionale del Vicino0.59 studs/sin-controllo-del-sonnosveglio
Accelerazione Lineare di Risveglio16.9 studs/s²svegliodormiente
Accelerazione Rotazionale di Risveglio16.9 studs/s²svegliodormiente

Le soglie di velocità e accelerazione rotazionale riflettono la velocità e l'accelerazione di un punto situato sulla sfera di delimitazione dell'assemblaggio (una sfera che contiene tutte le parti di un assemblaggio) che si muove rigidamente con l'assemblaggio.

Giunti attuati

A volte gli sviluppatori vogliono muovere le parti molto lentamente utilizzando un giunto attuato, un vincolo che applica forze o movimenti per azionare le parti collegate, come un HingeConstraint utilizzando un Motor. Per supportare questi scenari, gli assemblaggi collegati a giunti attuati utilizzano una soglia di velocità di sonno più rigorosa. Questo ritarda quando quegli assemblaggi si addormentano, consentendo un movimento lento e controllato senza che il sistema fisico li metta a dormire prematuramente.

I seguenti sono considerati giunti attuati:

Ulteriori situazioni di risveglio

Oltre alle situazioni descritte in in-controllo-del-sonno e dormiente, un assemblaggio entra nello stato sveglio quando:

Visualizzazione del debug

Durante il playtesting, puoi visualizzare gli stati di sonno degli assemblaggi attivando le Parti sveglie dal widget delle Opzioni di Visualizzazione situato nell'angolo in alto a destra del viewport 3D.

Una vista ravvicinata del viewport 3D con il pulsante Opzioni di Visualizzazione indicato nell'angolo in alto a destra.

Una volta abilitato, le parti simulate saranno delineate dallo stato attuale di sonno, con le parti sveglie delineate in rosso, le parti in-controllo-del-sonno delineate in arancione e le parti dormienti non delineate.

Parti simulate delineate dal colore che rappresenta il loro stato di sonno attuale
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.