ParticleEmitter

Mostrar obsoleto

*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!

Creating a Particle Emitter from Scratch

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

Métodos

  • Clear():()

    Remove todos os participantes que foram emitidos.

  • Emit(particleCount : number):()

    Emite um número dado de particulas.

Propriedades

Acceleration

Ler Parallel

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á.

Brightness

Ler Parallel

Escala a luz emitida pelo emissor quando ParticleEmitter.LightInfluence é 0.

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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.

Ler Parallel

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.
Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Oculto
Não replicado
Ler Parallel

LockedToPart

Ler Parallel

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.

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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.

Ler Parallel

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.

Ler Parallel

Define se os particípulos emitem apenas para fora, apenas para dentro ou em ambas as direções. Para exemplos visuais, veja aqui.

ShapePartial

Ler Parallel

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.

Ler Parallel

Define a emissão de partículas para emissão volumétrica ou apenas de superfície. Para exemplos visuais, veja aqui.

Ler Parallel

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.

Ler Parallel

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

Ler Parallel

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 .

Ler Parallel

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

ContentId
Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

Se for verdadeiro, as partículas emitidas seguem o vetor Workspace.GlobalWind. Aplica-se somente se a propriedade Drag for maior que 0.

ZOffset

Ler Parallel

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.

ParticleEmitter Burst

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

particleCount: number

O número de partículas a emitir.

Valor Padrão: 16

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.

Emit Particles Over Distance

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.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

Eventos