ParticleEmitter
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Um Emissor de Partículas é um objeto especial que emite partículas 2D personalizáveis no mundo.Para emitir e renderizar partículas, deve ser parente de um BasePart ou um Attachment dentro de tal parte.Quando paternizado para um BasePart , as partículas aparecem aleatoriamente dentro da caixa de delimitação da peça ou forma ; quando paternizado para um Attachment , as partículas aparecem a partir da posição do anexo.
Partículas são emitidas automaticamente quando o emissor está Enabled com um não-zero Rate , ou manualmente quando o método Emit é chamado.Com um não-zero Speed , as partículas são postas em movimento para fora e/ou para dentro, dependendo da propriedade ShapeInOut.
Por padrão, as partículas enfrentam a Câmera, mas o Orientation pode ser modificado para respeitar a velocidade das partículas em vez disso.
Durante o Lifetime das partículas, elas podem mudar de aparência de acordo com o Color e Size.Sua moção pode mudar ao longo do tempo de acordo com as propriedades Drag e Acceleration, e eles também podem se mover como seu pai se move quando estiverem LockedToPart ou tiverem uma propriedade não zero VelocityInheritance.
Para aprender mais sobre a criação e personalização de emissores de partículas, veja Emissores de Partículas.
Amostras de código
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
Resumo
Propriedades
Determina a aceleração global do eixo de todos os particípios ativos, medida em studs por segundo quadrado.
Escala a luz emitida pelo emissor quando ParticleEmitter.LightInfluence é 0.
Determina a cor de todos os particípios ativos ao longo de seus tempos de vida individuais.
Determina a taxa em que os participantes perderão metade de sua velocidade através do decadimento exponencial.
Determina a face do objeto de onde as partículas emitem.
Determina se as partículas emitem do emissor.
Determina quão rápido a textura do livro animado se move em quadros por segundo.
A mensagem de erro a ser exibida se o Texture for incompatível para um flipbook.
Determina o layout da textura do livro de virar. Deve ser Nenhum, Grid2x2, Grid4x4 ou Grid8x8.
Determina o tipo da animaçõesdo flipbook. Deve ser Loop, OneShot, PingPong ou Aleatória.
Determina se a animação começa em um quadro aleatório escolhido por partícula em vez de sempre começar no quadro zero.
Define um alcance aleatório de idades para partículas recém-emitidas.
Determina quantas cores de partículas são misturadas com as cores por trás delas.
Determina quanto as partículas são influenciadas pela luz ambiente.
Determina se os particípios se movem rigidamente com a peça de onde estão sendo emitidos.
Specifica como orientar partículas.
Determina o número de partículas emitidas por segundo.
Determina o alcance de velocidades angulares de partículas emitidas, medido em graus por segundo.
Determina o alcance de rotações em graus para partículas recém-emitidas.
Define a forma do emissor para uma caixa, esfera, cilindro ou disco.
Define se os particípulos emitem apenas para fora, apenas para dentro ou em ambas as direções.
Influencia a emissão de partículas do cilindro, disco, esfera e forma de caixa.
Define a emissão de partículas para emissão volumétrica ou apenas de superfície.
Determina o tamanho mundial ao longo da vida de particulas individuais.
Determina um alcance aleatório de velocidades (mínimo para máximo) em que novas partículas vão emitir, medido em studs por segundo.
Determina os ângulos em que os participantes podem ser emitidos aleatoriamente, medidos em graus.
Permite uma escala não uniforme de partículas, controlada por curva ao longo de sua vida útil.
Determina a imagem renderizada em partículas.
Valor entre 0 e 1 que controla a velocidade do efeito de partículas.
Determina a transparência de partículas ao longo de seus tempos de vida individuais.
Determina quanta da velocidade do pai é herdada pelas partículas quando emitidas.
Se as partículas emitidas seguem o vetor Workspace.GlobalWind.
Determina a posição de renderização frontal para trás de partículas; usado para controlar o que as partículas renderizam na parte superior/inferior.
Métodos
Remove todos os participantes que foram emitidos.
Emite um número dado de particulas.
Propriedades
Acceleration
A propriedade Aceleração determina como as Speed mudam ao longo de sua vida.É definido usando um Vector3 para determinar a aceleração nos eixos globais X / Y / Z e é medido em studs por segundo quadrado.Quando alterada, essa propriedade afeta todos os participantes emitidos pelo emissor, tanto atuais quanto futuros.
A aceleração vai desacelerar as partículas se os pontos do vetor no oposto EmissionDirection em que elas são emitidas. Caso contrário, ela as acelerará.
Color
A propriedade Cor determina a cor de todos os particípios ativos ao longo de seus tempos de vida individuais.A cor se aplica ao Texture quando renderizar e usa a textura alfa junto com o emissor de Transparency .Se um emissor tiver um valor LightEmission maior que 0, cores mais escuras fazem com que as partículas pareçam mais transparentes.
Mudar essa propriedade afeta todos os participantes emitidos pelo emissor, tanto atuais quanto futuros.
Quando essa propriedade usa um gradiente ColorSequence, a cor presente de uma partícula é determinada pela interpolação linear na sequência usando a idade da partícula e sua vida total.Por exemplo, se uma partícula foi gerada 2 segundos atrás e tem uma vida útil de 4 segundos, a cor será qualquer coisa que seja 50% do caminho através do ColorSequence.
Drag
A propriedade Arrastar determina a taxa em segundos em que as partículas individuais perderão metade de sua velocidade através de decadência exponencial.O arrastamento é aplicado ao escalonar a velocidade esperada de Speed e qualquer velocidade herdada do pai de VelocityInheritance.Definir esta propriedade para um valor negativo fará com que as velocidades das partículas cresçam exponencialmente.
EmissionDirection
A propriedade Direção de Emissão determina o rosto (Enum.NormalId) do objeto pai de onde as partículas emitem.Um negativo Speed significa que as partículas emitem na direção oposta.SpreadAngle varia ainda mais a direção de emissão.
Se você adicionar um ParticleEmitter a um Attachment que tem uma direção, você pode girar o próprio anexo ( Attachment.Orientation ) em vez de usar essa propriedade.
Enabled
A propriedade Ativada determina se as partículas emitem do emissor.Definir isso para false para impedir que mais partículas sejam geradas, mas quaisquer partículas existentes permanecem ativas até expirarem.Essa propriedade é útil quando você tem um efeito de partícula pré-feito que deseja manter desativado até precisar emitir partículas.
Se você quiser limpar todos os particípulos de um emissor desativado, chame Clear() .Então, se desejar, chame Emit() no emissor para emitir e renderizar partículas.
FlipbookFramerate
A propriedade FlipbookFramerate determina quão rápido a textura do livro animado em quadros por segundo.Como Lifetime, você pode definir um alcance mínimo e máximo para aleatorizar a taxa de quadros do flipbook, com um máximo de 30 quadros por segundo.
FlipbookIncompatible
A mensagem de erro a ser exibida se o Texture for incompatível para um flipbook.A textura do livro de virar deve ter dimensões de pixels 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512 ou 1024×1024.
FlipbookLayout
A propriedade FlipbookLayout determina o layout da textura. Pode ser qualquer valor do enum:
- Nenhum – Desabilite os recursos do flipbook e use a textura como uma textura única estática ao longo da vida da partícula.
- Grade2x2 – 2×2 quadros para uma animaçõesde 4 quadros.
- Grade4x4 – 4×4 quadros para uma animaçõesde 16 quadros.
- Grade8x8 – 8×8 quadros para uma animaçõesde 64 quadros.
FlipbookMode
A propriedade FlipbookMode determina o tipo da animaçõesdo flipbook. Pode ser qualquer valor do Enum.ParticleFlipbookMode enum:
- Ciclo – Reproduza continuamente todos os quadros, começando de volta no primeiro quadro após jogar o último.
- Tiro único – Jogue através da animação apenas uma vez ao longo da vida da partícula.Com essa configuração, a propriedade não se aplica; em vez disso, a taxa de quadros é determinada pela divisão igual da partícula por o número de quadros na animação. Animações de um tiro são úteis para animações não repetitivas claras, como uma explosão que cria uma nuvem de fumaça e depois desaparece.
- PingPong – Jogue da primeira à última imagem, então, em ordem inversa, da última para a primeira, repetindo ao longo do Lifetime da partícula.
- Aleatório – Jogue os quadros em uma ordem aleatória, misturando/cruzando de um quadro para o próximo.Isso pode ser útil para texturas de partículas orgânicas em taxas de quadros baixas, como estrelas lentamente piscando entre formas sutismente diferentes.
FlipbookStartRandom
A propriedade FlipbookStartRandom determina se cada partícula começa em um quadro aleatório da animação em vez de sempre começar no primeiro quadro.Um caso de uso é habilitar essa propriedade e também definir FlipbookFramerate para zero, causando que cada partícula emitida seja um quadro estático escolhido aleatoriamente a partir da textura do flipbook.
Lifetime
A propriedade Tempo de Vida define a idade máxima e mínima para partículas recém-emitidas.Os tempos de vida são armazenados em uma base por partícula, então, se esse valor for alterado, as partículas existentes permanecerão ativas até que seu tempo de vida aleatório termine.Uma vida de 0 impedirá que as partículas emitem de todas / todos.
LightEmission
A propriedade Emissão de Luz determina a mistura das cores com as cores atrás delas.Um valor de 0 usa o modo de mistura normal enquanto um valor de 1 usa mistura aditiva.Quando alterada, essa propriedade afeta instantaneamente todos os particíbulos possuídos pelo emissor, tanto atuais quanto futuros.
Essa propriedade não deve ser confundida com LightInfluence que determina como as partículas são afetadas pela luz ambiental.
Essa propriedade não faz as partículas acenderem o ambiente ao redor delas. Para conseguir isso, considere usar um PointLight .
LightInfluence
A propriedade Influência de Luz determina quanta luz ambiental afeta a cor de partículas individuais quando renderizar.Deve estar na faixa de 0–1; o comportamento de valores fora dessa faixa não é definido.Ao 0, as partículas não são influenciadas pela luz de forma alguma (elas mantêm a total brilhante); ao 1, as partículas são totalmente influenciadas pela luz (na completa escuridão, as partículas serão negras).
Por padrão, esse valor é 1 se inserido com ferramentas do Studio. Se inserido usando Instance.new(), é 0.
LocalTransparencyModifier
LockedToPart
A propriedade BloqueadoParaParte determina se as partículas "pegam" na fonte de emissão (o Attachment ou BasePart ao qual o ParticleEmitter está ligado).Se true , partículas ativas se moverão em passo de bloqueio se o objeto pai se mover.
Alternativamente, considere usar a propriedade VelocityInheritance com um valor de 1 que pode ser mais apropriado para alguns efeitos.
Orientation
A propriedade Orientação determina qual modo de orientação usar para a geometria de partículas de um emissor.
<td>Comportamento de Particulas</td></tr></thead><tbody><tr><td><b>Câmera Enfrentando</b></td><td>Quadro de anúncios para frente da câmera padrão; comportamento padrão.</td></tr><tr><td><b>Enfrentando a Câmera Mundial para Cima</b></td><td>Enfrentando a Câmera, mas girando apenas no eixo vertical ascendente do mundo <b>Y</b>.</td></tr><tr><td><b>VelocidadeParallel</b></td><td>Alinhado paralelo à sua direção de movimento.</td></tr><tr><td><b>VelocidadePerpendicular</b></td><td>Alinhado perpendicular à direção de movimento deles.</td></tr></tbody>
Orientação |
---|
Rate
A propriedade Taxa determina quantas partículas são emitidas por segundo enquanto o emissor está Enabled .É o oposto da frequência, significando que uma taxa de 5 emite uma partícula a cada 0,2 segundos.Quando alterada, essa propriedade não afeta nenhum participante ativo.
RotSpeed
A propriedade Velocidade de Rotação determina um alcance aleatório de velocidades angulares para partículas recém-emitidas, medido em graus por segundo.Uma velocidade angulada aleatória é escolhida após a emissão, então alterar esta propriedade não afeta partículas ativas.Essa propriedade, juntamente com Rotation, afeta o ângulo da imagem de partícula renderizada.
Partículas com velocidades angulares muito altas podem parecer girar mais devagar ou não, pois o ângulo de rotação é sincronizado com a velocidade de renderização do software.Por exemplo, se as partículas girarem exatamente a 360 graus a cada quadro, não haverá mudança aparente na rotação.
Rotation
A propriedade Rotação determina o alcance de rotações em graus para partículas recém-emitidas, medido em graus.Os valores positivos estão na direção de sentido horário.Essa propriedade é comumente definida como [0, 360] para fornecer uma rotação completamente aleatória a novas partículas.RotSpeed também influencia a rotação de uma partícula ao longo de sua vida.
As alterações neste valor afetam apenas novas partículas; as partículas existentes mantêm a rotação em que foram originalmente emitidas.
A propriedade Forma define a forma do emissor para uma caixa, esfera, cilindro ou disco.Depois de fazer uma seleção, você pode ajustar as propriedades ShapeStyle, ShapeInOut e ShapePartial para personalizar ainda mais a emissão de partículas.Para exemplos visuais, veja aqui.
ShapeInOut
Define se os particípulos emitem apenas para fora, apenas para dentro ou em ambas as direções. Para exemplos visuais, veja aqui.
ShapePartial
Dependendo do valor Shape , esta propriedade realiza uma ação diferente:
Para cilindros, especifica a proporção de raio superior.Um valor de 0 significa que o topo do cilindro tem raio zero, tornando-o um cone.Um valor de 1 significa que o cilindro não tem deformação.
Para discos, especifica a proporção do raio interno.Um valor de 0 significa que o disco está totalmente fechado (circulo/elipse), enquanto um valor de 1 significa que a emissão ocorre apenas no rim mais externo do disco.Os valores entre 0 e 1 emitem de um anel com uma determinada espessura.
Para esferas, especifica o ângulo hemisférico em que as partículas emitem.Um valor de 1 significa que as partículas emitem da esfera inteira; um valor de 0,5 significa que as partículas emitem de um meio-domo; um valor de 0 significa que as partículas só emitem de um único ponto no polo norte.
Para exemplos visuais, veja aqui.
ShapeStyle
Define a emissão de partículas para emissão volumétrica ou apenas de superfície. Para exemplos visuais, veja aqui.
Size
A propriedade Tamanho determina o tamanho mundial de todos os particípios ativos ao longo de seus tempos de vida individuais.Essa propriedade representa as dimensões do quadrado Texture para cada partícula.É um NumberSequence que funciona de forma semelhante a Transparency .
O tamanho presente de uma partícula é determinado por interpolação linear nesta sequência usando a idade da partícula e sua vida total.Por exemplo, se uma partícula foi gerada 2 segundos atrás e tem uma vida útil de 4 segundos, o tamanho será o que for 50% do caminho através do NumberSequence.Para qualquer NumberSequenceKeypoint com um valor de envelope não zero, um valor aleatório na faixa de envelope é escolhido para cada ponto de chave para cada partícula quando emitida.
Speed
A propriedade Velocidade determina um alcance aleatório de velocidades (mínimo para máximo) em que novas partículas emitirão, medido em studs por segundo.A velocidade de cada partícula é escolhida após a emissão e se aplica no EmissionDirection .Os valores negativos fazem com que as partículas viajem na direção oposta.
Observe que alterar Speed não afeta partículas ativas e elas mantêm qualquer velocidade que já tenham.No entanto, Acceleration , Drag e VelocityInheritance podem ser usados para afetar a velocidade de partículas ativas ao longo de sua vida.
SpreadAngle
A propriedade Ângulo de Espalhamento determina os ângulos aleatórios em que uma partícula pode ser emitida.Por exemplo, se o EmissionDirection é Top (+ Y ), este Vector2 descreve o tamanho da difusão de ângulo aleatório nos eixos X / Z , em graus.
Definir um eixo para 360 fará com que as partículas emitem em todas as direções em um circulo .Definir ambos para 360 fará com que as partículas emitem em todas as direções em uma esfera .
Squash
Permite uma escala não uniforme de partículas, controlada por curva ao longo de sua vida útil.Valores maiores que 0 causam partículas a encolherem horizontalmente e crescerem verticalmente, enquanto valores menores que 0 causam partículas a crescerem horizontalmente e encolherem verticalmente.
Texture
A propriedade Textura determina a imagem renderizada em partículas.Essa imagem é influenciada por Color , Transparency , LightInfluence e LightEmission.Texturas com fundos transparentes funcionam melhor para partículas.
TimeScale
Um valor entre 0 e 1 que controla a velocidade do efeito de partículas.Em 1, ele executa em velocidade normal; em 0.5, ele executa em metade da velocidade; em 0, ele congela no tempo.
Transparency
A propriedade Transparência determina a transparência de todos os particípios ativos ao longo de seus tempos de vida individuais.Ele funciona de forma semelhante a Size em como afeta as partículas ao longo do tempo.Em termos de renderização, um valor de 0 é completamente visível (opaco) e um valor de 1 é completamente invisível (não renderizado em todas / todos).
A transparência presente de uma partícula é determinada por interpolação linear nesta sequência usando a idade da partícula e sua vida total.Por exemplo, se uma partícula foi gerada 2 segundos atrás e tem uma vida útil de 4 segundos, a transparência será o que for 50% do caminho através do NumberSequence.Para qualquer NumberSequenceKeypoint com um valor de envelope não zero, um valor aleatório na faixa de envelope é escolhido para cada ponto de chave para cada partícula quando emitida.
VelocityInheritance
A propriedade Herança de Velocidade determina quanto da parte pai Velocity é herdado por partículas quando emitidas.Um valor de 0 significa que nenhuma velocidade é herdada, enquanto um valor de 1 significa que a partícula terá a mesma velocidade do pai BasePart.
Quando usado em conjunto com Drag, um emissor de partículas pode parecer "soltar" partículas de uma peça em movimento.
WindAffectsDrag
Se for verdadeiro, as partículas emitidas seguem o vetor Workspace.GlobalWind. Aplica-se somente se a propriedade Drag for maior que 0.
ZOffset
A propriedade ZOffset determina a posição de renderização frontal para trás de partículas, em studs, sem alterar seu tamanho na tela.Quando alterada, essa propriedade afeta tanto partículas atuais quanto futuras.Observe que esta propriedade aceita valores fracionais; não é como GuiObject.ZIndex (um integral).
Os valores positivos movem as partículas mais perto da câmera e os valores negativos movem as partículas para longe.Valores negativos suficientes podem causar partículas a renderizar dentro ou atrás da peça pai.
Métodos
Clear
O método Limpar instantaneamente limpa todos os particípios existentes que foram emitidos pelo ParticleEmitter através de sua emissão natural (não zero Rate em um Enabled emissor) ou via Emit().
Devolução
Amostras de código
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
O método Emite fará com que o ParticleEmitter emita instantaneamente o número dado de partículas.
Parâmetros
O número de partículas a emitir.
Devolução
Amostras de código
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