Oggetti in movimento sono oggetti che si muovono su uno o più assi all'interno dello spazio 3D.Usando la potenza integrata del motore di simulazione di Roblox, puoi far muovere gli oggetti e interagire con il loro ambiente in un modo che imita il comportamento fisico reale familiare e intuitivo per i giocatori, come la gravità, l'aerodinamica e la friction.
Usando il file Oggetti in movimento.rbxl come riferimento, questo tutorial spiega come le forze fisiche influenzino la mobilità lineare in Studio e mostra diverse tecniche per spostare oggetti da punto A a punto B nelle tue esperienze con diversi comportamenti di movimento, inclusa la guida su:
- Utilizzando una restrizione mover LinearVelocity per spostare un'intera assemblaggio a una velocità lineare costante.
- Utilizzando un PrismaticConstraint per limitare un'assemblaggio a un singolo asse e spostarlo a una velocità lineare costante rispetto a un punto nello spazio 3D.
- Utilizzando il metodo ApplyImpulse per spostare 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 per prevedere come gli oggetti che si muovono lineariamente possono comportarsi nelle esperienze, è importante avere una comprensione di alto livello di come gli oggetti si muovono in vita reale con movimento lineare. Movimento lineare è il movimento lungo un asse. Ad esempio, quando un blocco ha movimento lineare, si muove lungo un asse impostato.

La movimentazione lineare non può esistere senza forze fisiche esterne che spingono o traggono oggetti per muoversi.Secondo la prima legge di moto di Newton , gli oggetti fermi rimangono fermi e gli oggetti in movimento rimangono in movimento con una velocità costante a meno che non vengano attivati da una forza esterna.Ad esempio, un blocco fermo rimane fermo a meno che una forza fisica come il vento lo spinga a muoversi.
Forza è la misura della direzione e della magnitudine di una spinta o trazione fisica che fa cambiare la velocità lineare di un oggetto lungo un asse.Un cambiamento nella velocità è noto come accelerazione .Questo concetto è particolarmente importante per gli oggetti da muovere in Studio; più forza applichi agli oggetti, più rapidamente accelereranno.
Questo perché la forza deve essere maggiore di qualsiasi forza fisica che si oppone all'oggetto, come la gravità o la friczione.Ad esempio, se posizionassi il blocco su una piastra di metallo, la forza fisica del vento deve superare la quantità di attrito della piastra di metallo per continuare ad accelerare il blocco.Se la forza del vento non è molto maggiore della resistenza della piastra di metallo, il blocco accelera, solo più lentamente rispetto all'esempio precedente.

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.Studio misura la velocità lineare in base a quante righe si muove un oggetto al secondo.Gli studs sono le unità fisiche principali di Roblox per misurare la lunghezza e ogni stud equivale a circa 28cm nel mondo reale.

Capire 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 vuoi spingere gli oggetti verso l'alto, è importante considerare come devi regolare la forza per superare la gravità all'interno dell'ambiente in modo che gli oggetti si muovano con precisione.
Le seguenti sezioni approfondiscono questi concetti mentre impari a spostare gli oggetti a una velocità costante o iniziale lineare con la forza necessaria per superare qualsiasi forza fisica opposta all'interno dell'ambiente.Mentre esamini questi concetti fisici con le tecniche in arrivo, puoi prevedere più accuratamente come aggiustare i valori delle proprietà per ottenere qualsiasi comportamento di movimento lineare ideale in Studio.
Mantieni una velocità lineare costante
Perché un oggetto raggiunga e mantenga una velocità lineare costante, ha bisogno di una forza per superare qualsiasi forza opposta che deceleri la velocità lineare dell'oggetto o faccia rimanere l'oggetto fermo.Ad esempio, se vuoi che un oggetto abbia una velocità lineare di [0, 12, 0] in Studio, hai bisogno di abbastanza forza per l'oggetto per raggiungere e mantenere 12 borchie al secondo lungo l'asse Y nell'ambiente.
La quantità di forza necessaria non dipende solo dalle forze fisiche di opposizione all'interno dell'ambiente stesso, come gravità e attrito, ma anche dall'oggetto stesso.Ad esempio, se hai due oggetti della stessa forma che si muovono sullo stesso asse, l'oggetto con la maggiore quantità di massa richiede più forza per ottenere la stessa accelerazione lineare.
Le seguenti sottosezioni utilizzano assemblaggi di diverse forme e dimensioni per insegnarti come spostare sia un intero oggetto che solo una parte dell'oggetto a una velocità lineare costante.Mentre sperimenti diversi valori di proprietà, imparerai a stimare la quantità massima di forza di cui hai bisogno per le assemblaggi nelle tue esperienze.
Usa le restrizioni di velocità lineare
LinearVelocity gli oggetti sono un tipo di vincolo trasportatore che applica la forza su un'intera assemblata per mantenere una velocità lineare costante.Non bloccando la posizione dell'assemblaggio su un asse durante il suo movimento, l'assemblaggio è libero di ruotare quando si scontra con altri oggetti nello spazio 3D.Questo tipo di movimento porta a sorprendenti scenari di gioco che sono più difficili da prevedere per i giocatori.
Per iniziare a spostare l'assemblaggio, la restrizione LinearVelocity deve sapere:
- Il punto e la direzione positiva o negativa per applicare una forza.
- La quantità di borchie che vuoi che l'assemblaggio si muova al secondo.
- La quantità massima di forza che il motore può applicare per l'assemblaggio per raggiungere la velocità lineare costante.
Per dimostrare questo processo, configurerai un cuscinetto lilla con un allegato che una LinearVelocity vincolo di restrizione si muove il cuscinetto lilla 15 studs al secondo lungo l'asse negativo X del mondo con una velocità lineare costante.

Aggiungi allegato
Puoi specificare il punto in cui applicare la forza aggiungendo un oggetto Attachment alla raccolta, quindi configurando la posizione dell'allegato nello spazio 3D.L'esperienza di esempio Oggetti in movimento posiziona un allegato al centro del cuscinetto della giglio in modo che la restrizione possa spostare la mesh dall'allegato lungo un particolare asse.
Gli allegati includono ausili visivi per aiutarti a visualizzare i loro assi di movimento.La freccia gialla indica l'asse primaria dell' allegato e la freccia arancione indica l'asse secondaria dell' allegato.Mentre nessun asse di movimento influisce sul movimento della padella di lilla nei passaggi di questa tecnica, è importante comprendere questi ausili visivi per il futuro riferimento perché possono aiutarti a determinare il comportamento ideale per diversi tipi di vincoli, come il PrismaticConstraint nella prossima tecnica.

Per aggiungere un allegato:
Nella finestra Explorer , espandi la cartella LinearVelocityExample , quindi espandi il suo modello figlio LilyPad_DIY .
Inserisci un allegato nella griglia Pad .
- Passa il mouse sulla mesh e clicca il pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci un Allegato . L'allegato viene visualizzato nel centro della parte.
- Rinomina l'allegato a MoveAttachment .
Configura la restrizione
Ora che la tua mesh ha un punto fisso per spostare il cuscinetto della giglio, puoi configurare le proprietà di una LinearVelocity fissa per specificare la direzione e la magnitudine per la velocità lineare costante, la quantità di studs che vuoi che la mesh si muova al secondo e la quantità massima di forza che il motore può applicare per raggiungere una velocità lineare costante.
L'esperienza di esempio Oggetti in movimento applica fino a 5000 Rowtons di forza costante per spostare il cuscinetto della giglio 15 studs al secondo lungo l'asse negativo X del mondo con una velocità lineare costante.I Rowtons sono le unità fisiche principali di Roblox per misurare la forza.Per fare riferimento alle unità fisiche Roblox e come si convertono in unità metriche, vedi Unità Roblox.
Per configurare una restrizione LinearVelocity :
(Opzionale) Renderizza la restrizione visibile nello spazio 3D in modo da poter fare riferimento alla sua direzione lineare.
- Passa alla scheda Modello della barra degli strumenti, quindi alla sezione Constraints .
- Se non è attualmente abilitato, fai clic su Dettagli delle restrizioni per visualizzare gli ausili visivi delle restrizioni.
Inserisci una LinearVelocity nel mesh Pad .
- Nella finestra Explorer , passa il mouse sul mesh, quindi fai clic sull'icona ⊕. Viene visualizzato un menu contestuale.
- Dal menu contestuale, inserisci Velocità lineare .
Assegna l'attacco della mesh alla nuova restrizione.
- Nella finestra Explorer , seleziona la restrizione.
- Nella finestra Proprietà ,
- Imposta Attachment0 a MoveAttachment .
- Imposta MaxForce a 5000 per applicare fino a 5000 Rowtons di forza costante per raggiungere la velocità lineare target.
- Mantieni RelativeTo a Mondo per spostare il pad di giglio rispetto alla posizione e all'orientamento del mondo.
- Imposta Restrizione di velocità a Linea per limitare la forza lungo una linea dall'allegato.
- Imposta LineDirection a -1, 0, 0 per spostare il cuscinetto della giglio lungo l'asse negativa X del mondo.Nota che se impostassi questa proprietà a 1, 0, 0 la cuscinetta di giglio si muoverebbe lungo l'asse positiva X del mondo.
- Imposta LineVelocity a 15 per spostare il cuscinetto della giglio 15 studs al secondo.
Verifica la quantità di forza che imposti sposta la mesh di 15 studs al secondo lungo l'asse negativo X del mondo.
- Nella barra degli strumenti, naviga alla scheda Test .
- Seleziona Esegui dai modi di playtest. Studio simula l'esperienza nella posizione della fotocamera attuale senza il tuo avatar nello spazio 3D.
Usa le restrizioni PrismaticConstraint
PrismaticConstraint gli oggetti sono un tipo di vincolo meccanico che crea una giunta rigida tra due allegati, consentendo alle loro assemblaggi parenti di muoversi lungo un asse rispetto gli uni agli altri .Bloccando la posizione di entrambe le assemblaggi a un singolo asse, ogni assemblaggio è in grado di ruotare solo se ruota insieme nella stessa direzione.
Questo tipo di movimento porta a scenari di gioco stabili più facili da prevedere per i giocatori.Ad esempio, l'esperienza di esempio Oggetti in movimento utilizza oggetti PrismaticConstraint per spostare le piattaforme di registrazione che i giocatori possono utilizzare per attraversare con attenzione un fiume gigante.
Quando impostate PrismaticConstraint.ActuatorType a Motore , questa restrizione applica la forza sui due allegati con l'obiettivo di raggiungere e mantenere una velocità lineare costante.Se ancori una delle assemblaggi genitrici degli allegati, la forza continua a spostare l'assemblaggio non ancorato a una velocità lineare costante mentre l'assemblaggio ancorato rimane fermo.
Per iniziare a spostare l'assemblaggio, la restrizione PrismaticConstraint deve sapere:
- Il punto e la direzione positiva o negativa per applicare una forza.
- La quantità di borchie che vuoi che gli allegati si muovano al secondo.
- La quantità massima di forza che il motore può applicare agli accessori e alle loro assemblaggi parenti per raggiungere una velocità lineare costante.
Per dimostrare questo processo, configurerai un'assemblaggio di registro con due oggetti che hanno allegati figli che si muovono con una velocità lineare costante di PrismaticConstraint 40 studs al secondo lungo l'asse negativo X del mondo alla velocità costante lineare.

Configura gli allegati
Puoi specificare la direzione per spostare un particolare oggetto all'interno di un'assemblaggio aggiungendo due oggetti Attachment all'assemblaggio, quindi configurando il loro allineamento e orientamento nello spazio 3D.L'esperienza di esempio Oggetti in movimento si allinea su due allegati lungo l'asse X del mondo vicino alla posizione in cui il log non ancorato si sovrappone alla parte ancorata, e orienta l'asse primaria di ciascun allegato a fronte dell'asse negativa X del mondo.
Quando configuri la restrizione PrismaticConstraint nella sezione successiva, sposterà il log in relazione alla parte dell'ancoraggio.In altre parole, il log si allontanerà dalla parte ferma che non può muoversi perché è ancorata nello spazio 3D.
Per configurare gli allegati per la restrizione prismatica:
Nella finestra Explorer , espandi la cartella PrismaticConstraintExample , quindi espandi il suo modello figlio Log_DIY .
Inserisci un allegato nel mesh Log .
- Passa il mouse sulla mesh e clicca il pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci un Allegato . L'allegato viene visualizzato nel centro della parte.
- Rinomina l'allegato a LogAttachment .
Usando lo stesso processo, inserisci un allegato nella parte Ancoraggio , quindi rinomina l' allegato Ancoraggio附加 .
Utilizzando lo strumento Selettore di vista come riferimento per le coordinate del mondo, ruota LogAttachment e Ancoraggio附件 fino a quando l'asse primaria di ciascun allegato non si affaccia sull'asse negativa X del mondo
Riposiziona Ancoraggio附加 in modo che entrambi gli allegati siano allineati sull'asse X del mondo.
Configura la restrizione
Ora che i tuoi allegati sono allineati sullo stesso asse e hanno la stessa direzione che vuoi che il log si muova, puoi configurare le proprietà di una PrismaticConstraint vincolante per specificare se applicare la velocità lineare costante del bersaglio nella direzione positiva o negativa di ogni asse principale degli allegati, la quantità di borchie che vuoi che gli allegati si muovano al secondo e la quantità massima di forza che il motore può applicare per raggiungere una velocità lineare costante.
Mentre puoi scegliere diversi valori per i tuoi casi d'uso, l'esperienza di esempio Spostamento di oggetti applica fino a 50000 Rowtons di forza costante per spostare gli allegati 40 radiani al secondo lungo l'asse negativo X del mondo a una velocità lineare costante.Tuttavia, poiché l'ancoraggio è in un oggetto ancorato, solo l'ancoraggio del log può muoversi.
Per configurare una restrizione prismatica:
Inserisci un oggetto PrismaticConstraint in mesh Log .
- Nella finestra Explorer , passa il mouse sul mesh, quindi fai clic sull'icona ⊕. Viene visualizzato un menu contestuale.
- Dal menu contestuale, inserisci un vincolo prismatico .
Assegna gli allegati del log alla nuova restrizione in modo che il log si muova in relazione all'ancoraggio del blocco parte.
- Nella finestra Explorer , seleziona la restrizione.
- Nella finestra Proprietà ,
- Imposta Attachment0 a Ancoraggio附加 .
- Imposta Attachment1 a LogAttachment . La restrizione viene visualizzata nella finestra.
Nella finestra Explorer , seleziona la restrizione, quindi nella finestra Proprietà,
- Imposta Tipo attuatore a Motore . Vengono visualizzati i nuovi campi di proprietà.
- Imposta MotorMaxForce a 50000 per applicare fino a 50000 Rowtons di forza costante per raggiungere la velocità lineare target.
- Imposta Velocità a 40 per spostare il log 40 borchie al secondo.
Verifica la quantità di forza che imposti muove il log 40 studs al secondo lungo l'asse negativo X del mondo.
- Nella barra degli strumenti, naviga alla scheda Test .
- Seleziona Esegui dai modi di playtest. Studio simula l'esperienza nella posizione della fotocamera attuale senza il tuo avatar nello spazio 3D.
Applica una forza lineare iniziale
Un altro modo per cambiare la velocità lineare di un oggetto è applicare un impulso di forza.Dopo l'impulso di forza, l'oggetto decelera fino a diventare statico se esiste una forza opposta come la friczione, o rimane in movimento con una velocità lineare costante se non ci sono forze opposte.
Questa tecnica è utile per spostare oggetti dopo un evento di gioco significativo, come un'esplosione o una collisione impattante, poiché fornisce ai giocatori un feedback istantaneo.Per dimostrare, la seguente sottosessione ti insegna come lanciare il personaggio di un giocatore verso l'alto verso il cielo quando si scontrano con un pad di salto con un impulso iniziale che puoi adattare con nuovi valori per soddisfare i tuoi requisiti di gioco.
Utilizzare ApplyImpulse
Il metodo ApplyImpulse applica la forza su un'intera assemblaggio per ottenere una velocità lineare iniziale prima di rallentare a fermarsi quando ci sono forze opposte.Per iniziare a spostare l'assemblaggio, il metodo deve sapere:
- L'assemblaggio da spostare.
- L'asse per applicare la forza per raggiungere una velocità lineare iniziale.
- La quantità di forza da applicare ad ogni asse.
Puoi definire tutti questi valori in uno script.Ad esempio, lo script di esempio definisce l'assemblaggio da spostare come oggetto del personaggio del giocatore Humanoid , quindi applica un impulso di forza che è 2500 Rowton-secondi per lanciare il giocatore verso l'alto sull'asse positiva dello Y dell'universo.Nota che i personaggi dei giocatori hanno quantità diverse di massa, quindi potresti dover aumentare e bilanciare questa forza per lanciare ogni giocatore senza lanciare personaggi dei giocatori con quantità più piccole di massa troppo alte.
Per spostare un'assemblaggio utilizzando ApplyImpulse :
Nella finestra Explorer , 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 il pulsante ⊕. Viene visualizzato un menu contestuale.
- Dal menu, inserisci un Script . L'allegato viene visualizzato nel centro della parte.
- Rinomina lo script a 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)