Oggetti in movimento sono oggetti che si muovono su uno o più assi all'interno dello spazio 3D. Utilizzando la potenza integrata del motore di simulazione di Roblox, puoi far muovere gli oggetti e interagire con il loro ambiente in un modo che emula il comportamento fisico del mondo reale, familiare e intuitivo per i giocatori, come la gravità, l'aerodinamica e l'attrito.
Utilizzando il file .rbxl di riferimento degli Oggetti in Movimento, questo tutorial spiega come le forze fisiche influiscono sul movimento lineare nello Studio e ti mostra varie tecniche per muovere oggetti da un punto A a un punto B nelle tue esperienze, con diversi comportamenti di movimento, inclusi suggerimenti su:
- Utilizzare un vincolo di movimento LinearVelocity per muovere un'intera assemblaggio a una velocità lineare costante.
- Usare un PrismaticConstraint per vincolare un'assemblaggio a un singolo asse e muoverlo a una velocità lineare costante rispetto a un punto nello spazio 3D.
- Utilizzare il metodo ApplyImpulse per muovere un'assemblaggio con un impulso iniziale di forza in modo che l'assemblaggio deceleri lentamente nel tempo.
Movimento lineare e forze fisiche
Roblox Studio è un motore di simulazione del mondo reale che emula il comportamento fisico in tempo reale, quindi al fine di prevedere come gli oggetti in movimento lineare possono comportarsi nelle esperienze, è importante avere una comprensione generale di come gli oggetti si muovono nella vita reale con movimento lineare.
Il movimento lineare è il movimento lungo un asse. Ad esempio, quando un blocco ha un movimento lineare, si muove lungo un asse stabilito.

Il movimento lineare non può esistere senza forze fisiche esterne che spingono o tirano gli oggetti per farli muovere. Secondo la prima legge del movimento di Newton, gli oggetti fermi rimangono fermi e gli oggetti in movimento rimangono in movimento con una velocità costante a meno che non siano soggetti a una forza esterna. Ad esempio, un blocco stazionario rimane tale a meno che una forza fisica come il vento non lo spinga a muoversi.
La forza è la misura della direzione e della magnitudine di una spinta o di una trazione fisica che causa il cambiamento della velocità lineare degli oggetti lungo un asse. Un cambiamento di velocità è conosciuto come accelerazione. Questo concetto è particolarmente importante affinché gli oggetti possano muoversi nello Studio; più forza applichi agli oggetti, più rapidamente accelerano.
Questo perché la forza deve essere maggiore di qualsiasi forza fisica che si oppone al movimento dell'oggetto, come la gravità o l'attrito. Ad esempio, se posizionassi il blocco su una piastra di metallo, la forza fisica del vento deve superare l'attrito della piastra di metallo per continuare ad accelerare il blocco. Se la forza del vento non è molto maggiore dell'attrito della piastra di metallo, il blocco accelererà, solo più lentamente rispetto all'esempio precedente.

La velocità lineare è la misura del movimento di un oggetto, o quanto velocemente l'oggetto cambia la sua posizione lungo un asse nel corso di un periodo di tempo. Lo Studio misura la velocità lineare in base a quanti stud si muove un oggetto al secondo. Gli stud sono le unità fisiche primarie di Roblox per misurare la lunghezza, con ogni stud che corrisponde a circa 28 cm nel mondo reale.

Comprendere la velocità lineare è importante per progettare il gameplay nelle tue esperienze perché ti aiuta a determinare quanta forza hai bisogno per raggiungere una velocità particolare per i tuoi oggetti in movimento. Ad esempio, quando desideri spingere gli oggetti verso l'alto, è importante considerare come devi regolare la tua forza per superare la gravità all'interno dell'ambiente affinché gli oggetti si muovano correttamente.
Le sezioni seguenti approfondiscono questi concetti mentre impari a muovere oggetti a una velocità lineare costante o iniziale con la forza necessaria per superare qualsiasi forza fisica oppositiva all'interno dell'ambiente. Man mano che rivedi questi concetti fisici con le prossime tecniche, puoi prevedere in modo più accurato come regolare i valori delle proprietà per raggiungere qualsiasi ideale comportamento di movimento lineare nello Studio.
Mantenere una velocità lineare costante
Affinché un oggetto raggiunga e mantenga una velocità lineare costante, ha bisogno di una forza per superare qualsiasi forza fisica oppositiva che decelera la velocità lineare dell'oggetto o che causa l'oggetto a rimanere stazionario. Ad esempio, se desideri che un oggetto abbia una velocità lineare di [0, 12, 0] nello Studio, hai bisogno di abbastanza forza affinché l'oggetto raggiunga e mantenga 12 stud al secondo lungo l'asse Y nel suo ambiente.
La quantità di forza necessaria dipende non solo dalle forze fisiche opposte all'interno dell'ambiente stesso, come la gravità e l'attrito, ma anche dall'oggetto stesso. Ad esempio, se hai due oggetti della stessa forma che si muovono lungo lo stesso asse, l'oggetto con la massa maggiore richiede più forza per raggiungere la stessa accelerazione lineare.
Le sezioni successive usano assemblaggi di forme e dimensioni diverse per insegnarti come muovere un oggetto intero o solo una parte di questo a una velocità lineare costante. Mentre sperimenti con diversi valori delle proprietà, imparerai come stimare la massima quantità di forza di cui hai bisogno per gli assemblaggi nelle tue esperienze.
Utilizzare vincoli LinearVelocity
Gli oggetti LinearVelocity sono un tipo di vincolo di movimento che applicano una forza su un'intera assemblaggio per mantenere una velocità lineare costante. Non bloccando la posizione dell'assemblaggio su un asse durante il suo movimento, l'assemblaggio è libero di ruotare mentre collida con altri oggetti nello spazio 3D. Questo tipo di movimento porta a scenari di gameplay sorprendenti che sono più difficili da prevedere per i giocatori.
Per iniziare a muovere l'assemblaggio, il vincolo LinearVelocity deve conoscere:
- Il punto e la direzione positiva o negativa per applicare una forza.
- La quantità di stud che desideri che l'assemblaggio si muova al secondo.
- La massima quantità di forza che il motore può applicare affinché l'assemblaggio raggiunga la velocità lineare costante.
Per dimostrare questo processo, configurerai una ninfea con un attacco che viene riferito da un vincolo LinearVelocity per muovere la ninfea a 15 stud per secondo lungo l'asse X negativo del mondo a una velocità lineare costante.

Aggiungere un attacco
Puoi specificare il punto per applicare forza aggiungendo un oggetto Attachment all'assemblaggio, quindi configurando la posizione dell'attacco nello spazio 3D. L'esperienza campione Oggetti in Movimento posiziona un attacco al centro della ninfea in modo che il vincolo possa muovere la mesh dall'attacco lungo un asse particolare.
Gli attacchi includono aiuti visivi per aiutarti a visualizzare i loro assi di movimento. La freccia gialla indica l'asse principale dell'attacco, e la freccia arancione indica l'asse secondario dell'attacco. Sebbene nessuno dei due assi di movimento influenzi il movimento della ninfea nei passaggi di questa tecnica, è importante comprendere questi aiuti visivi per riferimento futuro perché possono aiutarti a determinare il comportamento ideale per diversi tipi di vincoli, come il PrismaticConstraint nella prossima tecnica.

Per aggiungere un attacco:
Nella finestra Esplora, espandi la cartella LinearVelocityExample, poi espandi il suo modello figlio LilyPad_DIY.
Inserisci un attacco nella mesh Pad.
- Passa il mouse sulla mesh e clicca sul pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci un Attacco. L'attacco appare al centro della parte.
- Rinomina l'attacco in MoveAttachment.

Configurare il vincolo
Ora che la tua mesh ha un punto fisso per muovere la ninfea, puoi configurare le proprietà di un vincolo LinearVelocity per specificare la direzione e la magnitudine della velocità lineare costante, la quantità di stud che desideri che la mesh si muova al secondo e la massima quantità di forza che il motore può applicare affinché la mesh raggiunga una velocità lineare costante.
L'esperienza campione Oggetti in Movimento applica fino a 5000 Rowtons di forza costante per muovere la ninfea a 15 stud al secondo lungo l'asse X negativo del mondo a una velocità lineare costante. I Rowtons sono le unità fisiche primarie di Roblox per misurare la forza. Per fare riferimento alle unità fisiche di Roblox e a come si convertono nelle unità metriche, vedere Unità di Roblox.
Per configurare un vincolo LinearVelocity:
Per rendere il vincolo visibile nella vista così da poter fare riferimento alla sua direzione lineare, attiva Mostra dettagli del vincolo dal menu Vista di Studio.
Inserisci un vincolo LinearVelocity nella mesh Pad.
- Nella finestra Esplora, passa il mouse sulla mesh, quindi clicca l'icona ⊕. Viene visualizzato un menu contestuale.
- Dal menu contestuale, inserisci LinearVelocity.
Assegna l'attacco della mesh al nuovo vincolo.
- Nella finestra Esplora, seleziona il vincolo.
- Nella finestra Proprietà,
- Imposta Attachment0 su MoveAttachment.
- Imposta MaxForce su 5000 per applicare fino a 5000 Rowtons di forza costante per raggiungere la velocità lineare target.
- Mantieni RelativeTo su World per muovere la ninfea rispetto alla posizione e all'orientamento del mondo.
- Imposta VelocityConstraint su Line per vincolare la forza lungo una linea dall'attacco.
- Imposta LineDirection su -1, 0, 0 per muovere la ninfea lungo l'asse X negativo del mondo. Nota che se impostassi questa proprietà su 1, 0, 0, la ninfea si muoverebbe lungo l'asse X positivo del mondo.
- Imposta LineVelocity su 15 per muovere la ninfea a 15 stud al secondo.

Verifica che la quantità di forza impostata muova la mesh a 15 stud al secondo lungo l'asse X negativo del mondo.
Seleziona la modalità di simulazione Esegui dal menu a discesa del mezzanino e clicca sul pulsante Gioca per iniziare. Lo Studio simula l'esperienza nella posizione attuale della telecamera senza il tuo avatar nello spazio 3D.

Utilizzare vincoli PrismaticConstraint
Gli oggetti PrismaticConstraint sono un tipo di vincolo meccanico che creano un giunto rigido tra due attacchi, permettendo ai loro assemblaggi genitori di muoversi lungo un asse l'uno rispetto all'altro. Bloccando la posizione di entrambi gli assemblaggi su un singolo asse, ciascun assemblaggio può ruotare solo se ruota insieme in direzione.
Questo tipo di movimento porta a scenari di gameplay stabili che sono più facili da prevedere per i giocatori. Ad esempio, l'esperienza campione Oggetti in Movimento utilizza oggetti PrismaticConstraint per muovere le piattaforme di log che i giocatori possono usare per attraversare con attenzione un enorme fiume.
Quando imposti PrismaticConstraint.ActuatorType su Motore, questo vincolo applica forza sui due attacchi con l'obiettivo che gli attacchi raggiungano e mantengano una velocità lineare costante. Se ancorassi uno degli assemblaggi genitori degli attacchi, la forza continuerebbe a muovere l'assemblaggio non ancorato a una velocità lineare costante mentre l'assemblaggio ancorato rimane stazionario.
Per iniziare a muovere l'assemblaggio, il vincolo PrismaticConstraint deve sapere:
- Il punto e la direzione positiva o negativa per applicare una forza.
- La quantità di stud che desideri che gli attacchi si muovano al secondo.
- La massima quantità di forza che il motore può applicare affinché gli attacchi e i loro assemblaggi genitori raggiungano una velocità lineare costante.
Per dimostrare questo processo, configurerai un assemblaggio di tronchi con due oggetti che hanno attacchi figlio che un PrismaticConstraint fa riferimento per muovere il tronco a 40 stud al secondo lungo l'asse X negativo del mondo a una velocità lineare costante.

Configurare gli attacchi
Puoi specificare la direzione per muovere un oggetto particolare all'interno di un assemblaggio aggiungendo due oggetti Attachment all'assemblaggio, quindi configurando il loro allineamento e orientamento nello spazio 3D. L'esperienza campione Oggetti in Movimento allinea due attacchi lungo l'asse X del mondo vicino alla posizione in cui il tronco non ancorato si sovrappone alla parte ancorata, e orienta ogni asse principale dell'attacco per affrontare l'asse X negativo del mondo.
Quando configuri il tuo vincolo PrismaticConstraint nella prossima sezione, muoverà il tronco in relazione alla parte ancorata. In altre parole, il tronco si muoverà lontano dalla parte stazionaria che non può muoversi perché è ancorata nello spazio 3D.
Per configurare gli attacchi per il vincolo prismatico:
Nella finestra Esplora, espandi la cartella PrismaticConstraintExample, poi espandi il suo modello figlio Log_DIY.
Inserisci un attacco nella mesh Log.
- Passa il mouse sulla mesh e clicca sul pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci un Attacco. L'attacco appare al centro della parte.
- Rinomina l'attacco in LogAttachment.

Utilizzando lo stesso processo, inserisci un attacco nella parte Anchor, poi rinomina l'attacco in AnchorAttachment.

Utilizza lo strumento Selettore di Vista come riferimento per le coordinate del mondo, ruota LogAttachment e AnchorAttachment fino a che ciascun asse principale dell'attacco non punta verso l'asse X negativo del mondo.

Riposiziona AnchorAttachment in modo che entrambi gli attacchi siano allineati lungo l'asse X del mondo.

Configurare il vincolo
Ora che i tuoi attacchi sono allineati sullo stesso asse e affrontano la direzione in cui desideri che il tronco si muova, puoi configurare le proprietà di un vincolo PrismaticConstraint per specificare se applicare la velocità lineare target costante nella direzione positiva o negativa di ciascun asse principale di ciascun attacco, la quantità di stud che desideri che gli attacchi si muovano al secondo, e la massima quantità di forza che il motore può applicare affinché il tronco raggiunga una velocità lineare costante.
Sebbene tu possa scegliere valori diversi per i tuoi casi d'uso, l'esperienza campione Oggetti in Movimento applica fino a 50000 Rowtons di forza costante per muovere gli attacchi a 40 radiani al secondo lungo l'asse X negativo del mondo a una velocità lineare costante. Tuttavia, poiché l'attacco di ancoraggio si trova in un oggetto ancorato, solo l'attacco del tronco può muoversi.
Per configurare un vincolo prismatico:
Inserisci un oggetto PrismaticConstraint nella mesh Log.
- Nella finestra Esplora, passa il mouse sulla mesh, quindi clicca sull'icona ⊕. Viene visualizzato un menu contestuale.
- Dal menu contestuale, inserisci un PrismaticConstraint.
Assegna gli attacchi del tronco al nuovo vincolo affinché il tronco si muova in relazione a la parte bloccata.
- Nella finestra Esplora, seleziona il vincolo.
- Nella finestra Proprietà,
- Imposta Attachment0 su AnchorAttachment.
- Imposta Attachment1 su LogAttachment. Il vincolo appare nella vista.

Nella finestra Esplora, seleziona il vincolo, quindi nella finestra Proprietà:
- Imposta ActuatorType su Motore. Viene visualizzato un nuovo campo di proprietà.
- Imposta MotorMaxForce su 50000 per applicare fino a 50000 Rowtons di forza costante per raggiungere la velocità lineare target.
- Imposta Velocity su 40 per muovere il tronco a 40 stud al secondo.

Verifica che la quantità di forza impostata muova il tronco a 40 stud al secondo lungo l'asse X negativo del mondo.
Seleziona la modalità di simulazione Esegui dal menu a discesa del mezzanino e clicca sul pulsante Gioca per iniziare. Lo Studio simula l'esperienza nella posizione attuale della telecamera senza il tuo avatar nello spazio 3D.

Applicare una forza lineare iniziale
Un altro modo di cambiare la velocità lineare di un oggetto è applicare un impulso di forza. Dopo l'impulso di forza, l'oggetto decelera fino a fermarsi se c'è una forza oppositiva come l'attrito, o rimane in movimento con velocità lineare costante se non ci sono forze oppositive.
Questa tecnica è utile per muovere oggetti dopo un evento significativo di gioco, come un'esplosione o una collisione impattante, perché fornisce un feedback immediato ai giocatori. Per dimostrare, la sezione seguente ti insegna come lanciare il personaggio di un giocatore verso l'alto nel cielo quando collide con un pad di salto con un impulso iniziale che puoi adattare con nuovi valori per soddisfare i tuoi requisiti di gioco.
Usare ApplyImpulse
Il metodo ApplyImpulse applica forza su un'intera assemblaggio per ottenere una velocità lineare iniziale prima di rallentare fino a fermarsi quando ci sono forze oppositive. Per iniziare a muovere l'assemblaggio, il metodo deve sapere:
- L'assemblaggio da muovere.
- L'asse su cui applicare forza per raggiungere una velocità lineare iniziale.
- La quantità di forza da applicare a ciascun asse.
Puoi definire tutti questi valori in uno script. Ad esempio, lo script di campione definisce l'assemblaggio da muovere come l'oggetto Humanoid del personaggio del giocatore, quindi applica un impulso di forza pari a 2500 Rowton-seconds per lanciare il giocatore verso l'alto lungo l'asse Y positivo del mondo. Nota che i personaggi dei giocatori hanno diverse quantità di massa, quindi potrebbe essere necessario aumentare e bilanciare questa forza per lanciare ogni giocatore senza lanciare i personaggi dei giocatori con quantità di massa inferiori troppo in alto.
Per muovere un'assemblaggio utilizzando ApplyImpulse:
Nella finestra Esplora, espandi la cartella ApplyImpulseExample, quindi espandi il suo modello figlio JumpPad_DIY.
Inserisci uno script nella parte JumpPad.
- Passa il mouse sulla parte e clicca sul pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci uno Script. L'attaccamento appare al centro della parte.
- Rinomina lo script in JumpScript.
Sostituisci il codice predefinito con il seguente codice:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)