ParticleEmitter
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Un ParticleEmitter è un oggetto speciale che emette particelle 2D personalizzabili nel Mondo.Per emettere e rendere le particelle, deve essere parented a un BasePart o un Attachment all'interno di una tale parte.Quando è genitorato a un BasePart , le particelle si generano casualmente all'interno della scatola di confine della parte o forma ; quando è genitorato a un Attachment , le particelle si generano dalla posizione dell'allegato.
Le particelle vengono emesse automaticamente quando l'emittente è Enabled con un non-zero Rate , o manualmente quando viene chiamato il metodo Emit .Con un non-zero Speed , le particelle sono messe in moto verso l'esterno e/o verso l'interno, a seconda della ProprietàShapeInOut.
Per impostazione predefinita, le particelle si trovano di fronte alla Telecamera, ma il Orientation può essere modificato per rispettare la velocità delle particelle invece.
Durante il Lifetime delle particelle, possono cambiare l'aspetto in base al Color e Size.La loro moto può cambiare nel tempo secondo le proprietà Drag e Acceleration e possono anche muoversi come il loro genitore quando sono LockedToPart o hanno una proprietà non zero VelocityInheritance.
Per saperne di più sulla creazione e personalizzazione di emittenti di particelle, vedi Emittenti di particelle.
Campioni di codice
This rather lengthy code sample shows how every property of a ParticleEmitter can be set, including NumberRange, NumberSequence and ColorSequence properties. Below is how the ParticleEmitter should look after every property is set. Try playing around with the different properties to customize how the effect looks!
local emitter = Instance.new("ParticleEmitter")
-- Number of particles = Rate * Lifetime
emitter.Rate = 5 -- Particles per second
emitter.Lifetime = NumberRange.new(1, 1) -- How long the particles should be alive (min, max)
emitter.Enabled = true
-- Visual properties
emitter.Texture = "rbxassetid://1266170131" -- A transparent image of a white ring
-- For Color, build a ColorSequence using ColorSequenceKeypoint
local colorKeypoints = {
-- API: ColorSequenceKeypoint.new(time, color)
ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), -- At t=0, White
ColorSequenceKeypoint.new(0.5, Color3.new(1, 0.5, 0)), -- At t=.5, Orange
ColorSequenceKeypoint.new(1, Color3.new(1, 0, 0)), -- At t=1, Red
}
emitter.Color = ColorSequence.new(colorKeypoints)
local numberKeypoints = {
-- API: NumberSequenceKeypoint.new(time, size, envelop)
NumberSequenceKeypoint.new(0, 1), -- At t=0, fully transparent
NumberSequenceKeypoint.new(0.1, 0), -- At t=.1, fully opaque
NumberSequenceKeypoint.new(0.5, 0.25), -- At t=.5, mostly opaque
NumberSequenceKeypoint.new(1, 1), -- At t=1, fully transparent
}
emitter.Transparency = NumberSequence.new(numberKeypoints)
emitter.LightEmission = 1 -- When particles overlap, multiply their color to be brighter
emitter.LightInfluence = 0 -- Don't be affected by world lighting
-- Speed properties
emitter.EmissionDirection = Enum.NormalId.Front -- Emit forwards
emitter.Speed = NumberRange.new(0, 0) -- Speed of zero
emitter.Drag = 0 -- Apply no drag to particle motion
emitter.VelocitySpread = NumberRange.new(0, 0)
emitter.VelocityInheritance = 0 -- Don't inherit parent velocity
emitter.Acceleration = Vector3.new(0, 0, 0)
emitter.LockedToPart = false -- Don't lock the particles to the parent
emitter.SpreadAngle = Vector2.new(0, 0) -- No spread angle on either axis
-- Simulation properties
local numberKeypoints2 = {
NumberSequenceKeypoint.new(0, 0), -- At t=0, size of 0
NumberSequenceKeypoint.new(1, 10), -- At t=1, size of 10
}
emitter.Size = NumberSequence.new(numberKeypoints2)
emitter.ZOffset = -1 -- Render slightly behind the actual position
emitter.Rotation = NumberRange.new(0, 360) -- Start at random rotation
emitter.RotSpeed = NumberRange.new(0) -- Do not rotate during simulation
-- Create an attachment so particles emit from the exact same spot (concentric rings)
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 5, 0) -- Move the attachment upwards a little
attachment.Parent = script.Parent
emitter.Parent = attachment
Sommario
Proprietà
Determina l'accelerazione dell'asse globale di tutti i particelle attive, misurata in studs per secondo quadrati.
Scala la luce emessa dall'emittente quando ParticleEmitter.LightInfluence è 0.
Determina il colore di tutti i particolari attivi durante il loro tempo di vita individuale.
Determina il tasso alla quale i particelli perderanno metà della loro velocità attraverso un decadimento esponenziale.
Determina il volto dell'oggetto da cui le particelle emettono.
Determina se le particelle si emettono dall'Emitter.
Determina la velocità con cui la texture del flipbook si anima nei frame al secondo.
Il messaggio di errore da mostrare se il Texture è incompatibile per un flipbook.
Determina la disposizione della Strutturadel flipbook. Deve essere Nessuno, Griglia2x2, Griglia4x4, o Griglia8x8.
Determina il tipo dell'animazionidel flipbook. Deve essere Loop, OneShot, PingPong o Random.
Determina se l'animazione inizia a un frame casuale scelto per particella invece di iniziare sempre a frame zero.
Definisce un intervallo casuale di età per le particelle emesse nuovamente.
Determina quanto i colori delle particelle sono mescolati con i colori dietro di loro.
Determina quanto le particelle sono influenzate dalla luce ambientale.
Determina se i particelli si muovono rigidamente con la parte da cui vengono emessi.
Specifica come orientare le particelle.
Determina il numero di particelle emesse al secondo.
Determina l'intervallo delle velocità angolari delle particelle emesse, misurato in gradi al secondo.
Determina l'intervallo di rotazioni in gradi per le particelle appena emesse.
Imposta la forma dell'emittente su una Quadro di selezione, sfera, cilindro o disco.
Imposta se i particelli si emettono solo verso l'esterno, solo verso l'interno o in entrambe le direzioni.
Influenza l'emissione delle particelle dal cilindro, dal disco, dalla sfera e dalla forma della scatola.
Imposta l'emissione delle particelle su emissione volumetrica o solo superficiale.
Determina la dimensione del mondo durante la vita di singole particelle.
Determina un intervallo casuale di velocità (minimo a massimo) a cui le nuove particelle emetteranno, misurato in studs al secondo.
Determina gli angoli in cui i particelli possono essere emessi casualmente, misurati in gradi.
Consente una ridimensionamento non uniforme dei particelli, controllato dalla curva durante la loro vita.
Determina l'immagine renduta sui particelli.
Valore tra 0 e 1 che controlla la velocità dell'effetto delle particelle.
Determina la trasparenza dei particolari rispetto ai loro tempi di vita individuali.
Determina quanta della velocità del parentè ereditata dai particelli quando emessa.
Se le particelle emesse seguono il vettorialeWorkspace.GlobalWind .
Determina la posizione di rendering in avanti-indietro dei particolari; utilizzato per controllare quale particolare rende in alto/in basso.
Metodi
Rimuove tutte le particelle che sono state emesse.
Emette un numero dato di particelle.
Proprietà
Acceleration
La proprietà Accelerazione determina come il Speed di particelle cambia nel corso della loro vita.Viene definito utilizzando un Vector3 per determinare l'accelerazione sugli assi globali X / Y / Z e viene misurata in studs al secondo quadrato.Quando viene cambiata, questa proprietà influisce su tutti i particelli emessi dall'Emitter, sia attuali che futuri.
L'accelerazione rallenterà le particelle se i punti vector nell'opposto EmissionDirection in cui vengono emesse. Altrimenti, le velocizzerà.
Color
La proprietà Colore determina il colore di tutte le particelle attive durante i loro singoli cicli di vita.Il colore si applica al Texture quando si rende e utilizza la texture alfa insieme all'emittente Transparency .Se un emittente ha un valore LightEmission superiore a 0, i colori più scuri fanno apparire le particelle più trasparenti.
Cambiare questa proprietà influisce su tutti i particelli emessi dall'Emitter, sia attuali che futuri.
Quando questa proprietà utilizza un gradiente ColorSequence, il colore presente di una particella è determinato dall'interpolazione lineare sulla sequenza utilizzando l'età della particella e la sua vita totale.Ad esempio, se una particella è stata generata 2 secondi fa e ha una durata di 4 secondi, il colore sarà qualsiasi cosa sia il 50% del percorso attraverso il ColorSequence .
Drag
La proprietà Trascina determina il tasso in secondi in cui le singole particelle perderanno metà della loro velocità attraverso un decadimento esponenziale.Il trascinamento viene applicato ridimensionando la velocità prevista da Speed e qualsiasi velocità ereditata dal padre da VelocityInheritance .Impostare questa proprietà a un valore negativo farà crescere le velocità delle particelle esponenzialmente.
EmissionDirection
La proprietà Direzione di emissione determina il volto (Enum.NormalId) dell'oggetto padre da cui le particelle emettono.Un negativo Speed significa che le particelle emettono nella direzione opposta.SpreadAngle ulteriormente varia la direzione di emissione.
Se aggiungi un ParticleEmitter a un Attachment , che ha una direzione, puoi ruotare l'allegato stesso ( Attachment.Orientation ) invece di utilizzare questa Proprietà.
Enabled
La proprietà Abilitata determina se le particelle emettono dall'Emitter.Impostare questo a false ferma le ulteriori particelle dal generarsi, ma qualsiasi particella esistente rimane attiva fino a quando non scade.Questa proprietà è utile quando hai un effetto di particelle pre-fatto che vuoi mantenere disabilitato fino a quando non ne hai bisogno per emettere particelle.
Se vuoi eliminare tutti i particolari da un emittente disabilitato, chiama Clear().Quindi, se lo si desidera, chiama Emit() sull'emittente per emettere e rendere le particelle.
FlipbookFramerate
La proprietà FlipbookFramerate determina la velocità con cui si anima la texture del flipbook in frame al secondo.Come Lifetime, puoi impostare un intervallo minimo e massimo per randomizzare la frequenza di fotogrammi del flipbook, con un massimo di 30 fotogrammi al secondo.
FlipbookIncompatible
Il messaggio di errore da mostrare se il Texture è incompatibile per un flipbook.La texture del flipbook deve avere dimensioni di pixel 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, o 1024×1024.
FlipbookLayout
La proprietà FlipbookLayout determina il layout della Struttura. Può essere qualsiasi valore dell'enumero Enum.ParticleFlipbookLayout
- Nessuno – Disabilita le funzionalità del flipbook e usa la texture come una singola texture statica durante la vita della particella.
- Griglia2x2 – 2×2 frame per un'animazionia 4 frame.
- Griglia4x4 – 4×4 frame per un'animazionia 16 frame.
- Griglia8x8 – 8×8 frame per un'animazionia 64 frame.
FlipbookMode
La proprietà FlipbookMode determina il tipo dell'animazionidel flipbook. Può essere qualsiasi valore dell'enum:
- Loop – Gioca continuamente attraverso tutti i frame, ricominciando dal primo frame dopo aver giocato l'ultimo.
- OneShot – Gioca attraverso l'animazione solo una volta durante la vita della particella.Con questa Configurazione, la proprietà FlipbookFramerate non si applica; invece, la frequenza di fotogrammi viene determinata dalla divisione della particella da Lifetime in ugual misura dal numero di frame nell'animazione. OneShot le animazioni sono utili per animazioni non ripetitive chiare, come un'esplosione che crea una nuvola di fumo e poi svanisce.
- PingPong – Gioca dal primo al ultimo frame, quindi inverti dall'ultimo al primo, ripetendo per tutto il Lifetime della particella.
- Casuale – Gioca i frame in un ordine casuale, mescolando/crossover da un frame all'altro.Questo può essere utile per le texture di particelle organiche a bassa frequenza fotica, come le stelle lentamente tremolanti tra forme sottilmente diverse.
FlipbookStartRandom
La proprietà FlipbookStartRandom determina se ciascuna particella inizia a un frame casuale dell'animazione invece di iniziare sempre al primo frame.Un caso d'uso è quello di abilitare questa proprietà e anche impostare FlipbookFramerate a zero, causando ogni particella emessa ad essere un frame statico scelto casualmente dalla Strutturadel flipbook.
Lifetime
La proprietà Tempo di vita definisce l'età massima e minima per le particelle emesse nuovamente.I tempi di vita vengono memorizzati su base per-particella, quindi se questo valore viene cambiato, le particelle esistenti rimarranno attive fino alla fine della loro vita casualmente scelta.Una vita di 0 impedirà alle particelle di emettere tutti/tutte.
LightEmission
La proprietà Emissione di luce determina il mescolamento dei colori Texture con i colori dietro di essi.Un valore di 0 utilizza la modalità di fusione normale mentre un valore di 1 utilizza la fusione additiva.Quando viene cambiata, questa proprietà influisce istantaneamente su tutti i particelli di proprietà dell'emittente, sia attuali che futuri.
Questa proprietà non deve essere confusa con LightInfluence che determina come le particelle sono influenzate dalla luce ambientale.
Questa proprietà non fa accendere le particelle nell'ambiente attorno a loro. Per raggiungere questo obiettivo, considera l'uso di un PointLight.
LightInfluence
La proprietà LightInfluence determina quanta luce ambientale influisca sul colore delle singole particelle quando si Renderizzare.Deve essere nella gamma 0–1; il comportamento dei valori al di fuori di questa gamma non è definito.A 0, le particelle non sono influenzate dalla luce in alcun modo (conservano la piena luminosità); a 1, le particelle sono completamente influenzate dalla luce (in completa oscurità, le particelle saranno nere).
Per impostazione predefinita, questo valore è 1 se inserito con gli strumenti di Studio. Se inserito utilizzando Instance.new(), è 0.
LocalTransparencyModifier
LockedToPart
La proprietà BloccatoAParte determina se le particelle "aderiscono" alla fonte di emissione (la Attachment o BasePart a cui il ParticleEmitter è parented).Se true , le particelle attive si muovono in passo blocco se si muove l'oggetto padre.
In alternativa, considera l'uso della proprietà VelocityInheritance con un valore di 1 che può essere più appropriato per alcuni effetti.
Orientation
La proprietà Orientamento determina quale modalità di orientamento utilizzare per la geometria delle particelle di un emittente.
<td>Comportamento delle particelle</td></tr></thead><tbody><tr><td><b>FacingCamera</b></td><td>Standard camera-facing billboard quad; comportamento predefinito.</td></tr><tr><td><b>AffacciandoCameraWorldUp</b></td><td>Affacciandosi alla Telecamera, ma ruotando solo sull'asse verticale verso l'alto <b>Y</b>.</td></tr><tr><td><b>VelocitàParallela</b></td><td>Allineato parallelo alla loro direzione di movimento.</td></tr><tr><td><b>VelocitàPerpendicolare</b></td><td>Allineato perpendicolare al loro movimento direzionale.</td></tr></tbody>
Orientamento |
---|
Rate
La proprietà Tasso determina il numero di particelle emesse al secondo mentre l'emittente è Enabled .È l'inverso della frequenza, cioè un tasso di 5 emette una particella ogni 0,2 secondi.Quando viene cambiata, questa proprietà non ha alcun effetto su qualsiasi particella attiva.
RotSpeed
La proprietà Velocità di rotazione determina un intervallo casuale di velocità angolari per le particelle emesse nuovamente, misurato in gradi al secondo.Una velocità angolare casuale viene scelta durante l'emissione, quindi cambiare questa proprietà non influisce sui particolari attivi.Questa Proprietà, insieme a Rotation , influisce sull'angolo dell'immagine delle particelle renderizzate.
Le particelle con velocità angolari molto alte possono sembrare di ruotare più lentamente o non tutti/tutte, poiché l'angolo di rotazione è sincronizzato con la velocità di rendering del software.Ad esempio, se le particelle ruotino esattamente a 360 gradi ogni frame, non ci sarà alcun cambiamento apparente nella rotazione.
Rotation
La proprietà Rotazione determina l'intervallo di rotazioni in gradi per le particelle emesse nuovamente, misurato in gradi.I valori positivi sono nella direzione dell'orologio.Questa proprietà è comunemente impostata su [0, 360] per fornire una rotazione completamente casuale alle nuove particelle.RotSpeed influisce anche sulla rotazione di una particella durante la sua vita.
I cambiamenti di questo valore interessano solo le nuove particelle; le particelle esistenti mantengono la rotazione a cui sono state originariamente emesse.
La proprietà Forma imposta la forma dell'emittente a una Quadro di selezione, sfera, cilindro o disco.Dopo aver fatto una selezione, puoi regolare le proprietà ShapeStyle, ShapeInOut e ShapePartial per personalizzare ulteriormente l'emissione delle particelle.Per gli esempi visivi, vedi qui .
ShapeInOut
Imposta se i particelli emettono solo verso l'esterno, solo verso l'interno o in entrambe le direzioni. Per gli esempi visivi, vedi qui.
ShapePartial
A seconda del valore Shape, questa proprietà esegue un'azione diversa:
Per i cilindri, specifica la proporzione del raggio superiore.Un valore di 0 significa che la parte superiore del cilindro ha un raggio zero, rendendolo un cono.Un valore di 1 significa che il cilindro non ha deformazioni.
Per i dischi, specifica la proporzione del raggio interno.Un valore di 0 significa che il disco è completamente chiuso (cerchio/ellisse), mentre un valore di 1 significa che l'emissione si verifica solo sul bordo più esterno del disco.I valori tra 0 e 1 si emettono da un annulus con una certa spessore.
Per le sfere, specifica l'angolo emisferico su cui le particelle emettono.Un valore di 1 significa che le particelle si emettono dall'intera sfera; un valore di 0.5 significa che le particelle si emettono da una metà di una cupola; un valore di 0 significa che le particelle si emettono solo da un singolo punto al polo nord.
Per gli esempi visivi, vedi qui.
ShapeStyle
Imposta l'emissione delle particelle sull'emissione volumetrica o superficiale soltanto. Per gli esempi visivi, vedi qui.
Size
La proprietà Dimensione determina la dimensione mondiale di tutte le particelle attive durante i loro singoli cicli di vita.Questa proprietà rappresenta le dimensioni del quadrato Texture per ciascuna particella.È un NumberSequence che funziona in modo simile a Transparency .
La dimensione attuale di una particella è determinata dall'interpolazione lineare su questa sequenza utilizzando l'età della particella e la sua vita totale.Ad esempio, se una particella è stata generata 2 secondi fa e ha una durata di 4 secondi, la dimensione sarà qualsiasi sia il 50% del percorso attraverso il NumberSequence .Per qualsiasi NumberSequenceKeypoint con un valore di involucro non zero, un valore casuale nella gamma di involucro viene scelto per ciascun punto di chiave per ciascuna particella quando viene emessa.
Speed
La proprietà Velocità determina un intervallo casuale di velocità (minimo a massimo) a cui le nuove particelle emetteranno, misurato in studs al secondo.La velocità di ciascuna particella viene scelta all'emissione e si applica nel EmissionDirection .I valori negativi fanno viaggiare le particelle all'indietro.
Si noti che cambiare Speed non influisce sulle particelle attive e mantengono qualsiasi velocità che hanno già.Tuttavia, Acceleration , Drag e VelocityInheritance possono essere utilizzati per influenzare la velocità delle particelle attive durante la loro vita.
SpreadAngle
La proprietà Angolo di diffusione determina gli angoli casuali in cui una particella può essere emessa.Ad esempio, se il EmissionDirection è Top (+ Y ), questo Vector2 descrive la dimensione della diffusione dell'angolo casuale su gli assi X / Z , in gradi.
Impostare un asse a 360 gradi farà sì che le particelle emettano in tutte le direzioni in un circolo .Impostare entrambi a 360 farà sì che le particelle emettano in tutte le direzioni in una sfera .
Squash
Consente una ridimensionamento non uniforme dei particelli, controllato dalla curva durante la loro vita.I valori maggiori di 0 causano la contrazione delle particelle sia orizzontalmente che verticalmente, mentre i valori inferiori a 0 causano la crescita delle particelle sia orizzontalmente che verticalmente.
Texture
La proprietà Texture determina l'immagine renduta sui particolari.Questa immagine è influenzata da Color , Transparency , LightInfluence e LightEmission .Le texture con sfondi trasparenti funzionano meglio per le particelle.
TimeScale
Un valore tra 0 e 1 che controlla la velocità dell'effetto delle particelle.A 1, funziona a velocità normale; a 0.5 funziona a metà velocità; a 0 si congela nel tempo.
Transparency
La proprietà Trasparenza determina la trasparenza di tutti i particolari attivi durante i loro singoli cicli di vita.Funziona in modo simile a Size in modo in cui influisce sui particelli nel tempo.In termini di rendering, un valore di 0 è completamente visibile (opaco) e un valore di 1 è completamente invisibile (non viene tutti/tuttereso).
La trasparenza attuale di una particella è determinata dall'interpolazione lineare su questa sequenza utilizzando l'età della particella e la sua vita totale.Ad esempio, se una particella è stata generata 2 secondi fa e ha una durata di 4 secondi, la trasparenza sarà qualunque cosa sia il 50% del percorso attraverso il NumberSequence .Per qualsiasi NumberSequenceKeypoint con un valore di involucro non zero, un valore casuale nella gamma di involucro viene scelto per ciascun punto di chiave per ciascuna particella quando viene emessa.
VelocityInheritance
La proprietà VelocityInheritance determina quanto della parte genitrice Velocity è ereditata dalle particelle quando vengono emesse.Un valore di 0 significa che nessuna velocità viene ereditata, mentre un valore di 1 significa che la particella avrà esattamente la stessa velocità del padre BasePart .
Quando viene utilizzato in combinazione con Drag , un emittente di particelle può apparire per "spargere" le particelle da una parte in movimento.
WindAffectsDrag
Se vero, le particelle emesse seguono il vettorialeWorkspace.GlobalWind. Si applica solo se la proprietà Drag è maggiore di 0.
ZOffset
La proprietà ZOffset determina la posizione di rendering in avanti-indietro delle particelle, in studs, senza cambiare le loro dimensioni sullo schermo.Quando viene cambiata, questa proprietà influisce sia sulle particelle attuali che future.Nota che questa proprietà accetta valori frazionali; non è come GuiObject.ZIndex (un Integro).
I valori positivi spostano le particelle più vicine alla fotocamera e i valori negativi spostano le particelle lontano.Valori negativi sufficientemente negativi possono causare particelle a rendere all'interno o dietro la parte genitrice.
Metodi
Clear
Il metodo Cancella istantaneamente cancella tutte le particelle esistenti emesse dal attraverso la sua emissione naturale (non zero su un emittente) o tramite .
Restituzioni
Campioni di codice
This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end
Emit
Il metodo Emetti farà in modo che il ParticleEmitter emetta istantaneamente il numero di particelle indicate.
Parametri
Il numero di particelle da emettere.
Restituzioni
Campioni di codice
This code sample causes a parent ParticleEmitter to ParticleEmitter:Emit() particles based on how far the parent BasePart moves.
local RunService = game:GetService("RunService")
local emitter = script.Parent
local part = emitter.Parent
local PARTICLES_PER_STUD = 3
local lastPosition = part.Position
local distance = 0
local function onStep()
local displacement = part.Position - lastPosition
distance = distance + displacement.magnitude
local n = math.floor(distance * PARTICLES_PER_STUD)
emitter:Emit(n)
distance = distance - n / PARTICLES_PER_STUD
lastPosition = part.Position
end
RunService.Stepped:Connect(onStep)
emitter.Enabled = false
This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end