Creazione di oggetti in movimento

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

Oggetti in movimento sono oggetti che si muovono su uno o più assi nell'Spazio3D. Utilizzando il potere incorporato del motore di simulazione di Roblox, puoi far muovere e interagire con il loro ambiente in un modo che imita il comportamento fisico reale che è familiare e intuitivo per i giocatori, come la gravità, l'aerodinamica e la frittura.

Usando il file Movimento oggetti.rbxl come riferimento, questo tutorial spiega come le forze fisiche influenzano la velocità lineare in Studio e mostra varie tecniche per spostare gli oggetti da punto A a punto B nelle tue esperienze con comportamenti di movimento diversi, tra cui le istruzioni su:

  • Usando una limitazione LinearVelocity a muovere un'interaAssembly a velocità lineare costante.
  • Usa un PrismaticConstraint per limitare un'assemblaggio a un solo asse e spostarlo in una velocità lineare costante rispetto a un punto nello Spazio3D.
  • Usa il metodo ApplyImpulse per spostare un'assemblaggio con un impulso iniziale di forza in modo che l'assemblaggio si deceli lentamente nel tempo.

Movimento lineare e forze fisiche

Roblox Studio è un motore di simulazione in tempo reale che imita il comportamento fisico in tempo reale, quindi per predire come gli oggetti che muovono in linea possono comportarsi in esperienze, è importante avere una comprensione di alto livello di come gli oggetti si muovono in vita reale con movimento lineare. La velocità lineare è la velocità di movimento lungo un asse. Ad esempio, quando un blocco ha una velocità lineare, si muove lungo un set di assi.

A gray block in front of a dark background. The movement axis is highlighted, and it faces toward the left of the screen to signify that the block is going to move along the world's Y axis.

La velocità lineare non può esistere senza forze fisiche esterne che spingono o tengono gli oggetti in Sposta. Secondo la prima legge del movimento di Newton, gli oggetti in movimento sono in movimento con una velocità costante a meno che non siano attivati da una forza esterna. Ad esempio, un blocco in movimento iniziale rimane iniziale finché un'azione esterna come il vento non lo spinge a Sposta.

Forza è il misuratore della direzione e della magnitudine di un'azione fisica che causa l'oggetto a cambiare la sua velocità lineare lungo un asse. Un cambiamento della velocità è conosciuto come accelerazione . Questo concetto è particolarmente importante per gli oggetti per muoverti in Studio; più forza si applica agli oggetti, più velocemente accelereranno.

Questo perché la forza deve essere maggiore di qualsiasi forza fisica che spinge contro l'oggetto, come la gravità o la frittione. Ad esempio, se si posiziona il blocco su una piastra di metallo, la forza fisica del vento deve superare la quantità di frittione dalla piastra di metallo per continuare ad accelerare il blocco. Se la forza del vento non è molto maggiore della frittura dalla piastra di metallo, il bloc si acc

A gray block in front of a dark grey metal plate with a diagram that signifies the block will have a plate friction to slow the block's movement from the wind.

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. Studio misura la velocità lineare in base a quante volte gli studs si muovono per secondo. Gli stud sono le unità fisiche principali di Roblox per misurare la lunghezza, e ogni stud corrisponde a circa 28cm nel Mondoreale.

A gray block in front of the default baseplate's 4x4 grid texture. A single stud cube rectangle is highlighted.

Capire la velocità lineare è importante per progettare il gameplay nelle tue esperienze, poiché ti aiuta a determinare quanta forza hai bisogno per raggiungere una certa velocità per i tuoi oggetti in movimento. Ad esempio, quando vuoi spingere gli oggetti verso l'alto, è importante considerare come devi regolare la tua forza per superare la gravità nell'ambiente in modo che gli oggetti si muovano correttamente.

Le seguenti sezioni si immerse più a fondo in questi concetti mentre impari a spostare gli oggetti in una velocità lineare costante o iniziale con la forza necessaria per superare qualsiasi forza fisica avversaria all'interno dell'Ambiente. Mentre rivedi questi concetti fisici con le prossime tecniche, puoi più accuratemente predire come regolare i valori delle proprietà per ottenere qualsiasi comportamento lineare ideale in Studio.

Mantere una velocità lineare costante

Per un oggetto per raggiungere e mantenere una velocità lineare costante, ha bisogno di una forza per superare qualsiasi forza fisica opposta che abbia decelerato la velocità lineare dell'oggetto o causi l'oggetto a rimanere fermo. Ad esempio, se vuoi che un oggetto abbia una velocità lineare di [0, 12, 0] in Studio, hai bisogno di una forza

La quantità di forza necessaria non dipende solo dalle forze fisiche opportune all'interno dell'ambiente stesso, come la gravità e la frittura, ma anche sull'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.

La piccola parte del triangolo ha una piccola quantità di massa, quindi ha meno forza per ottenere la stessa accelerazione.
La grande parte del triangolo ha una grande quantità di massa, quindi ha bisogno di più forza per ottenere la stessa accelerazione.

Le seguenti sezioni utilizzano assemblaggi di diverse forme e dimensioni per insegnarti come spostare un oggetto intero o solo una parte dell'oggetto ad una velocità lineare costante. Mentre esperimi con diversi valori di proprietà, imparerai a stimare la quantità massima di forza che hai bisogno per le assemblaggi nelle tue esperienze.

Uso dei vincoli di velocità lineare

LinearVelocity oggetti sono un tipo di mover constraints che applica la forza su un'interaAssembly per mantenere una velocità lineare costante. Dall'abbassare la posizione dell'assemblaggio a un'asse durante il suo movimento, l'assemblaggio è libero di ruotare mentre si scontra con altri oggetti nello Spazio3D. Questo tipo di movimento porta a scenari di gioco sorprendenti che sono più diff

Mentre le fasce di lilla si scontrano tra loro, cambiano orientamento ma continuano a scendere nel fiume ad una velocità lineare costante.

Per iniziare a spostare l'assemblaggio, il LinearVelocity vincolo deve sapere:

  • La direzione punto e positivo o negativo per applicare una forza.
  • Il numero di studs che vuoi che la сборra 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 lily pad con un'attrezzatura che un LinearVelocity limite di riferimento si riferisce per spostare il lily pad 15 studs per secondo lungo l'asse negativo del Mondoa una velocità lineare costante.

A close up view of a lily pad. The lily pad's constraint visual aid is visible, and it points to the right, which is the world's negative X axis.

Aggiungi allegato

Puoi specificare il punto per applicare la forza aggiungendo un oggetto Attachment all'assemblaggio, quindi configurando la posizione dell'attacco nello Spazio3D. L'esperienza di Movimento oggetti posiziona un oggetto nell'area centrale del pad di lilla in modo che la limitazione possa spostare il mesh dall'oggetto lungo un particolare asse.

Gli accessori includono aiuti visivi per aiutarti a visualizzare i loro assi di movimento. La freccia gialla rappresenta l'asse principale dell'accessorio, e la freccia arancione rappresenta l'asse secondario dell'allegato. Mentre nessuno degli assi del movimento influisce sull'attrezzatura di lilla nei passi di questa tecnica, è importante capire questi aiuti visivi per il futuro in quanto possono ai

A attachment's visual aid arrows. The yellow arrow that signfies the attachment's primary axis points up, and the orange arrow that signfies the attachment's secondary axis points to the right.

Per aggiungere un allegato:

  1. Nella finestra Explorer , espandi il cartella LinearVelocityExample , quindi espandi il suo figlio LilyPad_DIY modello.

  2. Inserisci un allegato nella Mesh, magliaPad .

    1. Passa il mouse sulla mesh e fai clic sul pulsante ⊕. Viene visualizzato un menu contestuale.
    2. Dal menu, inserisci un allegato . L'allegato viene visualizzato nel centro della parte.
    3. Rinomina l'allegato in MoveArrow .
    A close up view of a lily pad and its attachment visual aid. The primary axis points away from the camera, and the secondary axis points upward.

Configura vincolo

Ora che la tua mesh ha un punto fisso per spostare il lily Spazio, puoi configurare le proprietà di un LinearVelocity vincolo per specificare la direzione e la magnitudine per la velocità lineare costante, la quantità di studs che vuoi che il mesh si muova per secondo e la quantità massima di forza che il motore può applicare per il mesh per raggiungere una velocità lineare costante.

L'esperienza Oggetti in movimento applica fino a 5000 Rowtons di forza costante per spostare il pad di lilla 15 studs per secondo lungo l'asse negativo X del Mondoin una velocità lineare costante. I Rowtons sono le unità fisiche di base di Roblox per misurare la forza. Per fare riferimento alle unità fisiche di Roblox e come vengono convertite in unità metrica, vedi Unità Roblox

Per configurare una LinearVelocity Vincolo:

  1. (Opzionale) Rendi la restrizione visibile nello spazio 3D in modo da poter fare riferimento alla sua direzione lineare.

    1. In the menu bar, navigate to the Modello tab, then the Constraints section.
    2. Se non è attualmente abilitato, fai clic su Dettagli di vincolo per visualizzare gli aiuti visivi di vincolo.
    A close up view of the Studio's Constraints section UI.
  2. Inserisci un LinearVelocity vincolo nella Pad Mesh, maglia.

    1. Nella finestra Explorer , passa il mouse sulla Mesh, maglia, quindi fai clic sull'Icona⊕. Viene visualizzato un menu contestuale.
    2. Dal menu contestuale, inserisci Velocità lineare .
  3. Assegna l'allegato della Mesh, magliaal nuovo Vincolo.

    1. Nella finestra Explorer , seleziona la Vincolo.
    2. Nella finestra Proprietà ,
      1. Imposta Attachment0 su MoveArrow .
      2. Imposta MaxForce su 5000 per applicare fino a 5000 Rowtons di forza costante per raggiungere la velocità lineare target.
      3. Mantieni RelativeTo per World per spostare il pad di lilla rispetto alla posizione e all'orientamento del Mondo.
      4. Imposta VelocityConstraint su Linea per limitare la forza lungo una linea dall'allegato.
      5. Imposta LineDirection su -1, 0, 0 per spostare il pad di lilla lungo l'asse negativo X del Mondo. Nota che se impostassi questa proprietà su 1, 0, 0 il pad di lilla si sposterà lungo l'asse positivo X del Mondo.
      6. Imposta Velocità di linea su 15 per spostare il pad del lilla 15 studs per secondo.
    A close up view of a lily pad and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. Verifica la quantità di forza che hai impostato fa muovere il mesh 15 studs per secondo lungo l'asse negativo X del Mondo.

    1. Nella barra dei menu, fai clic sulla scheda Prova .

    2. Nella sezione Simulazione, fai clic sul Selettore Modalità. Viene visualizzato un menu a discesa.

      Rapid playtest options in Test tab of Studio
    3. Seleziona Esegui . Studio simula l'esperienza alla posizione della telecamera attuale senza il tuo avatar nello Spazio3D.

Uso dei vincoli PrismaticConstraint

PrismaticConstraint oggetti sono un tipo di vincolo meccanico che crea un articolazione rigida tra due allegati, consentendo alle loro assemblaggi genitori di muoversi lungo un asse relativo tra loro . Facendo in modo che entrambe le assemblaggi posizione siano bloccati su un asse unico, ogni assemblaggio è in grado di ruotare solo se ruotano insieme nella stessa direzione.

Questo tipo di movimento porta a scenari di gioco stabili che sono più facili per i giocatori predire. Ad esempio, l'esperienza di oggetti in movimento usa PrismaticConstraint oggetti per spostare le piattaforme di log che i giocatori possono usare per passare con cautela un fiume gigante.

Quando impostate PrismaticConstraint.ActuatorType su Motor , questa restrizione applica la forza sui due allegati con il fine di raggiungere e mantenere una velocità lineare costante. Se ancorate uno degli allegati' parent assemblies, la forza continua a muovere l'assemblaggio non ancorato ad una velocità lineare costante mentre l'assemblaggio ancorato rimane in posizione stabile.

Per iniziare a spostare l'assemblaggio, il PrismaticConstraint limite deve sapere:

  • La direzione punto e positivo o negativo per applicare una forza.
  • Il numero di studs che vuoi che gli allegati si muovano al secondo.
  • La quantità massima di forza che il motore può applicare per gli accessori e le loro assemblaggi parenti per raggiungere una velocità lineare costante.

Per dimostrare questo processo, configurerai un'assemblaggio del log con due oggetti che hanno attacchi figli che un PrismaticConstraint riferisce per spostare il log 40 studs per secondo lungo l'asse negativo X del Mondoa una velocità lineare costante.

A close up view of a brown log on top of a river. The log's constraint visual aid is visible and points to the right, or the world's negative X axis.

Configura accessori

Puoi specificare la direzione in cui spostare un particolare oggetto all'interno di un'assemblaggio aggiungendo due oggetti Attachment all'assemblaggio, quindi configurando la loro allineamento e orientamento nello Spazio3D. L'esperienza di Movimento oggetti aggiunge due allegati lungo l'asse X del Mondovicino alla posizione in

Quando hai configurato il tuo PrismaticConstraint vincolo nella prossima sezione, sposterà il registro in relazione alla parte dell'ancora. In altre parole, il registro si muoverà lontano dalla parte immobile che non può muoversi perché è ancorato nello Spazio3D.

Per configurare gli allegati per la Vincoloprismatica:

  1. Nella finestra Explorer , espandi il PrismaticConstraintExample cartella, quindi espandi il suo figlio Log_DIY modello.

  2. Inserisci un allegato nella Log Mesh, maglia.

    1. Passa il mouse sulla mesh e fai clic sul pulsante ⊕. Viene visualizzato un menu contestuale.
    2. Dal menu, inserisci un allegato . L'allegato viene visualizzato nel centro della parte.
    3. Rinomina l'allegato in LogRotation .
    A close up view of a log and its attachment visual aid. The primary axis points toward the camera, and the secondary axis points upward.
  3. Usando lo stesso processo, inserisci un allegato nella parte Ancoraggio , quindi rinomina l'allegato Anchoraggio di attacco .

    A close up view of a log and two attachment visual aids. The primary axis of the new attachment visual aid points to the right, and the secondary axis points upward.
  4. Usando lo strumento View Selector come riferimento per i coordinatori del Mondo, ruota LogAttachment e AnchorRotation fino a quando l'asse principale di ciascun allegato non guarda verso l'asse negativo X

    A close up view of a log and its attachment visual aid. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.
  5. Ripristina AnchorAttachment in modo che entrambi gli accessori siano allineati sull'asse X del Mondo.

    A close up view of a log and its attachment visual aids that are now positioned horizontally. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.

Configura vincolo

Ora che i tuoi allegati sono allineati sullo stesso asse e faccia la stessa direzione in cui vuoi che la registrazione si Sposta, puoi configurare le proprietà di un limite di PrismaticConstraint per specificare se applicare la velocità di destinazione lineare nella direzione positiva o negativa di ciascun allegato's'asse principale, la quantità di studs che vuoi che gli allegati si muovano per secondo e la quant

Mentre puoi scegliere diversi valori per i tuoi casi d'uso, l'esperienza Moving Objects di campione si applica fino a 50000 Rowtons di costante forza per spostare gli allegati 40 radian per secondo lungo l'asse negativo del Mondoin una velocità lineare costante. Tuttavia, poiché l'accessorio dell'ancora è in un oggetto ancorato, solo l'accessorio del log può essere Sposta.

Per configurare una Vincoloprismatica:

  1. Inserisci un oggetto PrismaticConstraint nel Log Mesh, maglia.

    1. Nella finestra Explorer , passa il mouse sulla Mesh, maglia, quindi fai clic sull'Icona⊕. Viene visualizzato un menu contestuale.
    2. Dal menu contestuale, inserisci un PrismaticConstraint .
  2. Assegna gli allegati del registro alla nuova limitazione in modo che il registro si muova in relazione al blocco ancorato.

    1. Nella finestra Explorer , seleziona la Vincolo.
    2. Nella finestra Proprietà ,
      1. Imposta Attachment0 su AnchorRotation .
      2. Imposta Attachment1 su LogAppearanceaggio . Il vincolo viene visualizzato nella finestra.
    A close up view of a log and its constraint visual aid. It doesn't have a arrow visual aid because it doesn't yet have a set velocity.
  3. Nella finestra Explorer , seleziona la Vincolo, quindi nella finestra Proprietà,

    1. Imposta ActuatorType su Motor . Nuovi campi di proprietà visualizzati.
    2. Imposta MotorMaxForce su 50000 per applicare fino a 50000 Rowtons di costante forza per raggiungere la velocità lineare target.
    3. Imposta Velocità su 40 per spostare il legno 40 studs al secondo.
    A close up view of a log and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. Verifica la quantità di forza che hai impostato fa muovere il registro 40 studs per secondo lungo l'asse negativo X del Mondo.

    1. Nella barra dei menu, fai clic sulla scheda Prova .

    2. Nella sezione Simulazione, fai clic sul Selettore Modalità. Viene visualizzato un menu a discesa.

      Rapid playtest options in Test tab of Studio.
    3. Seleziona Esegui . Studio simula l'esperienza alla posizione della telecamera attuale senza il tuo avatar nello Spazio3D.

Applicazione di una forza lineare iniziale

Un altro modo per cambiare la velocità lineare di un oggetto è applicando un impulso di forza. Dopo l'impulso di forza, l'oggetto rallenta fino a diventare stationario se esiste una forza opposta, come la friction, o rimane in movimento con una velocità lineare costante se non ci sono forze opposte.

Questa tecnica è utile per spostare gli oggetti dopo un evento di gioco significativo, come un'esplosione o una collisione impattante, perché fornisce ai giocatori Riscontro/Replicaistantanei. Per dimostrare, la seguente sezione ti insegna come lanciare il personaggio di un Giocatoreverso il cielo quando si scontra con un pad di salto con un impulso iniziale che puoi adattare con nuovi valori per soddisfare le tue esigenze di gioco.

Uso di ApplyImpulse

Il metodo ApplyImpulse applica la forza su un'interaAssembly per ottenere una velocità lineare iniziale prima di rallentare a uno stop quando ci sono forze opposte. Per iniziare a spostare l'Assembly, il metodo deve sapere:

  • L'assemblaggio da Sposta.
  • L'asse su cui applicare la forza per raggiungere una velocità iniziale lineare.
  • La quantità di forza da applicare a ciascun asse.

Puoi definire tutti questi valori in uno script. Ad esempio, lo script di esempio definisce l'assemblaggio per spostare come l'oggetto Humanoid del personaggio del giocatore, quindi applica un impulso di forza che è 2500 Rowton-secondi per lanciare il giocatore verso l'alto sul MondoY positivo. Nota che i personaggi dei

Per spostare un'assemblaggio usando ApplyImpulse :

  1. Nella finestra Explorer , espandi il ApplicaImpulsoExample cartella, quindi espandi il suo figlio JumpPad_DIY modello.
  2. Inserisci uno script nella parte JumpPad .
    1. Passa il mouse sulla parte e fai clic sul pulsante ⊕. Viene visualizzato un menu contestuale.
    2. Dal menu, inserisci uno Script . L'allegato viene visualizzato al centro della parte.
    3. Rinomina lo script in JumpScript .
  3. Remplace il codice predefinito con il seguente codice:

local volume = script.Parent
local function onTouched(other)
local impulse = Vector3.new(0, 2500, 0)
local character = other.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and other.Name == "LeftFoot" then
other:ApplyImpulse(impulse)
end
end
volume.Touched:Connect(onTouched)