Sistema di sonno

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

Ogni assemblaggio nel motore Roblox corrisponde a un singolo corpo rigido. La posizione e la velocità di ciascun corpo rigido descrivono dove si trova e quanto velocemente si sta muovendo, e uno dei compiti principali 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 automobili 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 di 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 si sta muovendo o accelerando, ed è quindi simulato. Gli assemblaggi entrano in questo stato da situazioni descritte in dormiente e in controllo del sonno, così come da ulteriori situazioni di risveglio.

Dormiente

Un assemblaggio dormiente non si sta muovendo né accelerando, ed è quindi non simulato.

Un assemblaggio è considerato 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 il non movimento causerebbe l'ingresso errato di un assemblaggio nello stato di dormiente. Ad esempio, se una palla viene lanciata verticalmente, la sua velocità si avvicina a zero quando raggiunge la sua massima altezza, rendendola un candidato per il sonno e mai più in grado di cadere. Per gestire tali casi, il motore considera un assemblaggio in accelerazione se la sua accelerazione lineare o accelerazione rotazionale sono superiori alle soglie 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 è simulato. Ad ogni passo del mondo, un assemblaggio in controllo del sonno verifica se:

Se una di queste condizioni è vera, o in qualsiasi delle ulteriori situazioni di risveglio, l'assemblaggio in controllo del sonno entra nello stato sveglio.

Riferimento soglia

La seguente tabella fornisce le varie soglie di velocità e accelerazione utilizzate per determinare se un assemblaggio si sta muovendo o accelerando.

SogliaValoreCambio di stato
Velocità Lineare0.33 studs/ssveglio ⟩ dormiente
Velocità Rotazionale0.42 studs/ssveglio ⟩ dormiente
Accelerazione Lineare0.24 studs/s²sveglio ⟩ dormiente
Accelerazione Rotazionale0.24 studs/s²sveglio ⟩ dormiente
Vicino Velocità Lineare0.48 studs/sin controllo del sonno ⟩ sveglio
Vicino Velocità Rotazionale0.59 studs/sin controllo del sonno ⟩ sveglio
Risveglio Accelerazione Lineare16.9 studs/s²sveglio ⟩ dormiente
Risveglio Accelerazione Rotazionale16.9 studs/s²sveglio ⟩ dormiente

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 in 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 forza o movimento per guidare 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 prematuramente a dormire.

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 di debug

Durante il playtesting, puoi visualizzare gli stati di sonno degli assemblaggi attivando le Parti Sveglie dal widget Opzioni di Visualizzazione nell'angolo in alto a destra della vista 3D.

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

Una volta abilitato, le parti simulate saranno contornate dal loro stato di sonno attuale, con le parti sveglie contornate in rosso, le parti in controllo del sonno contornate in arancione e le parti dormienti non contornate.

Parti simulate contornate 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.