ParticleEmitter
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Un émetteur de particules est un objet spécial qui émet des particules 2D personnalisables dans le monde.Pour émettre et rendre des particules, il doit être parenté à un BasePart ou un Attachment à l'intérieur d'une telle partie.Lorsqu'il est parenté à un , les particules apparaissent de manière aléatoire dans la boîte de bordure ou la forme de la partie ou ; lorsqu'il est parenté à un , les particules apparaissent à partir de la position de l'point d'attache.
Les particules s'émettent automatiquement lorsque l'émetteur est Enabled avec un non zéro Rate , ou manuellement lorsque la méthode Emit est appelée.Avec un non zéro Speed , les particules sont mises en mouvement vers l'extérieur et/ou vers l'intérieur, en fonction de la propriété ShapeInOut.
Par défaut, les particules font face à la caméra, mais le Orientation peut être modifié pour respecter la vitesse des particules à la place.
Pendant le Lifetime des particules, elles peuvent changer d'apparence selon le Color et le Size.Leur motion peut changer au fil du temps selon les propriétés Drag et Acceleration, et ils peuvent également se déplacer lorsque leur parent se déplace lorsqu'ils sont LockedToPart ou ont une propriété non nulle VelocityInheritance.
Pour en savoir plus sur la création et la personnalisation d'émetteurs de particules, voir émetteurs de particules.
Échantillons de code
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
Résumé
Propriétés
Détermine l'accélération de l'axe global de tous les particules actives, mesurée en studs par seconde carrée.
Échelle la lumière émise par l'émetteur lorsque ParticleEmitter.LightInfluence est 0.
Détermine la couleur de toutes les particules actives pendant leur durée de vie individuelle.
Détermine le taux auquel les particules perdront la moitié de leur vitesse par décroissance exponentielle.
Détermine le visage de l'objet d'où les particules émettent.
Détermine si les particules émettent de l'émetteur.
Détermine la vitesse à laquelle la texture du livre animé se déplace en images par seconde.
Le message d'erreur à afficher si le Texture n'est pas compatible pour un livre de poche.
Détermine la structure de la texture du livre à retourner. Doit être aucune, grille2x2, grille4x4 ou grille8x8.
Détermine le type d'animationsde livre numérique. Doit être Loop, OneShot, PingPong ou Random.
Détermine si l'animation commence à un cadre aléatoire choisi par particule au lieu de toujours commencer à zéro cadre.
Définit une plage aléatoire d'âges pour les particules nouvellement émises.
Détermine la quantité de couleurs des particules qui se mélangent avec les couleurs derrière elles.
Détermine la quantité de particules influencées par la lumière environnementale.
Détermine si les particules se déplacent rigoureusement avec la pièce d'où elles sont émises.
Spécifie comment orienter les particules.
Détermine le nombre de particules émises par seconde.
Détermine la plage de vitesses angulaires des particules émises, mesurée en degrés par seconde.
Détermine la plage de rotations en degrés pour les particules nouvellement émises.
Définit la forme de l'émetteur à une boîte de modélisation, une sphère, un cylindre ou un disque.
Définit si les particules émettent vers l'extérieur uniquement, vers l'intérieur uniquement, ou dans les deux directions.
Influence l'émission de particules du cylindre, du disque, de la sphère et de la forme de boîte.
Définit l'émission de particules à l'émission volumétrique ou à l'émission exclusive de surface.
Détermine la taille du monde au cours de la vie des particules individuelles.
Détermine une plage aléatoire de vitesses (minimum à maximum) à laquelle les nouvelles particules émettront, mesurée en studs par seconde.
Détermine les angles auxquels les particules peuvent être émises aléatoirement, mesurés en degrés.
Permet un dimensionnement non uniforme des particules, contrôlé par courbe tout au long de leur vie.
Détermine l'image rendue sur les particules.
Valeur comprise entre 0 et 1 qui contrôle la vitesse de l'effet de particule.
Détermine la transparence des particules au cours de leurs vies individuelles.
Détermine la quantité de la vitesse du parent qui est héritée par les particules lorsqu'elles sont émises.
Si les particules émises suivent le force vectorielleWorkspace.GlobalWind.
Détermine la position de rendu en avant en arrière des particules ; utilisée pour contrôler ce que les particules rendent en haut/en bas.
Méthodes
Supprime toutes les particules qui ont été émises.
Émet un nombre donné de particules.
Propriétés
Acceleration
La propriété accélération détermine comment les Speed des particules changent au cours de leur vie.Il est défini en utilisant un Vector3 pour déterminer l'accélération sur les axes globaux X / Y / Z et est mesuré en studs par seconde carrée.Lorsqu'elle est modifiée, cette propriété affecte toutes les particules émises par l'émetteur, à la fois actuelles et futures.
L'accélération ralentira les particules si les points vectoriels dans l'opposé EmissionDirection dans lequel elles sont émises. Sinon, elle les accélérera.
Color
La propriété Couleur détermine la couleur de toutes les particules actives pendant leur durée de vie individuelle.La couleur s'applique au Texture lors de la rendition et utilise la texture alpha ainsi que l'émetteur de Transparency .Si un émetteur a une valeur LightEmission supérieure à 0, les couleurs plus sombres font apparaître les particules plus transparentes.
Changer cette propriété affecte toutes les particules émises par l'émetteur, à la fois actuelles et futures.
Lorsque cette propriété utilise un gradient ColorSequence, la couleur présente d'une particule est déterminée en interpolant linéairement sur la séquence en utilisant l'âge de la particule et sa durée de vie totale.Par exemple, si une particule est apparue il y a 2 secondes et a une durée de vie de 4 secondes, la couleur sera ce qui est à 50% du chemin à travers le ColorSequence .
Drag
La propriété glisser détermine le taux en secondes à laquelle les particules individuelles perdront la moitié de leur vitesse par décroissance exponentielle.Glisser est appliqué en augmentant la vitesse attendue à partir de Speed et toute vitesse héritée du parent à partir de VelocityInheritance.Définir cette propriété à une valeur négative provoquera une croissance exponentielle de la vitesse des particules.
EmissionDirection
La propriété EmissionDirection détermine le visage ( Enum.NormalId ) de l'objet parent à partir duquel les particules émettent.Un négatif Speed signifie que les particules émettent dans la direction opposée.SpreadAngle plus varie la direction d'émission.
Si vous ajoutez un ParticleEmitter à un Attachment qui a une direction, vous pouvez faire pivoter l'attachement lui-même (Attachment.Orientation) au lieu d'utiliser cette propriété.
Enabled
La propriété Activée détermine si les particules émettent de l'émetteur.Définir ceci à false arrête la génération de particules supplémentaires, mais toutes les particules existantes restent actives jusqu'à leur expiration.Cette propriété est utile lorsque vous avez un effet de particule préfabriqué que vous voulez laisser désactivé jusqu'à ce que vous en ayez besoin pour émettre des particules.
Si vous voulez effacer toutes les particules d'un émetteur désactivé, appelez Clear() .Ensuite, si nécessaire, appelez Emit() sur l'émetteur pour émettre et rendre des particules.
FlipbookFramerate
La propriété FlipbookFramerate détermine la vitesse à laquelle la texture du livre animé se déplace en images par seconde.Comme Lifetime, vous pouvez définir une plage minimale et maximale pour randomiser la fréquence de rafraîchissement du livre numérique, avec un maximum de 30 cadres par seconde.
FlipbookIncompatible
Le message d'erreur à afficher si le Texture n'est pas compatible pour un livre de poche.La texture du livre retourné doit avoir des dimensions de pixels 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, ou 1024×1024.
FlipbookLayout
La propriété FlipbookLayout détermine la disposition de la texture. Elle peut être n'importe quelle valeur de l'enumérité Enum.ParticleFlipbookLayout
- Aucun – Désactivez les fonctionnalités de livre numérique et utilisez la texture comme une seule texture statique au cours de la vie de la particule.
- Grille2x2 – 2×2 cadres pour une animationsà 4 cadres.
- Grille4x4 – 4×4 cadres pour une animationsde 16 cadres.
- Grille8x8 – 8×8 cadres pour une animationsde 64 cadres.
FlipbookMode
La propriété Mode de livre animé détermine le type de l'animationsde livre animé. Elle peut être n'importe quelle valeur de l'enumérit Enum.ParticleFlipbookMode
- Boucle – Jouer en continu à travers toutes les cadres, en commençant à nouveau par la première cadre après avoir joué la dernière.
- OneShot – Jouez à travers l'animation une seule fois au cours de la vie de la particule.Avec ce paramètre, la propriété n'est pas appliquée ; à la place, le taux de rafraîchissement est déterminé par la division de la particule par le nombre de cadres dans l'animation. Les animations OneShot sont utiles pour des animations non répétitives claires, telles qu'une explosion qui crée un nuage de fumée puis disparaît.
- PingPong – Jouez de la première à la dernière image, puis en arrière de la dernière à la première, en répétant tout au long du Lifetime de la particule.
- Aléatoire – Jouez les cadres dans un ordre aléatoire, mélangeant/croisant d'un cadre à l'autre.Cela peut être utile pour les textures de particules organiques à des fréquences d'images faibles, telles que les étoiles lentement clignotantes entre des formes subtilement différentes.
FlipbookStartRandom
La propriété FlipbookStartRandom détermine si chaque particule commence à un cadre aléatoire de l'animation au lieu de toujours commencer par le premier cadre.Un cas d'utilisation est d'activer cette propriété et de définir également FlipbookFramerate à zéro, ce qui fait en sorte que chaque particule émise soit un cadre statique choisi au hasard à partir de la texture du livre numérique.
Lifetime
La propriété à vie définit l'âge maximum et minimum des particules nouvellement émises.Les durées de vie sont stockées sur une base par particule, donc si cette valeur est modifiée, les particules existantes resteront actives jusqu'à la fin de leur durée de vie aléatoire.Une durée de vie de 0 empêchera les particules de s'émettre du tout.
LightEmission
La propriété Émission de lumière détermine le mélange des couleurs Texture avec les couleurs derrière elles.Une valeur de 0 utilise le mode de mélange normal alors qu'une valeur de 1 utilise le mélange additif.Lorsqu'elle est modifiée, cette propriété affecte instantanément toutes les particules possédées par l'émetteur, à la fois actuelles et futures.
Cette propriété ne doit pas être confondue avec LightInfluence qui détermine comment les particules sont affectées par la lumière environnementale.
Cette propriété ne fait pas pas que les particules éclairent l'environnement autour d'elles. Pour ce faire, envisagez d'utiliser un PointLight .
LightInfluence
La propriété influence de la lumière détermine à quel point la lumière environnementale affecte la couleur des particules individuelles lorsqu'elles rendu.Il doit être dans la plage de 0–1 ; le comportement des valeurs en dehors de cette plage n'est pas défini.À 0, les particules ne sont pas influencées par la lumière du tout (elles conservent la luminosité complète) ; à 1, les particules sont entièrement influencées par la lumière (dans l'obscurité complète, les particules seront noires).
Par défaut, cette valeur est de 1 si elle est insérée avec des outils de Studio. Si elle est insérée en utilisant Instance.new(), elle est de 0.
LocalTransparencyModifier
LockedToPart
La propriété Verrouillé à la partie détermine si les particules "s'accrochent" à la source d'émission (la Attachment ou BasePart à laquelle le ParticleEmitter est parenté).Si true , les particules actives se déplaceront en passe de verrouillage si l'objet parent se déplace.
Alternativement, envisagez d'utiliser la propriété VelocityInheritance avec une valeur de 1 qui peut être plus appropriée pour certains effets.
Orientation
La propriété Orientation détermine le mode d'orientation à utiliser pour la géométrie des particules d'un émetteur.
<td>Comportement des particules</td></tr></thead><tbody><tr><td><b>Caméra face à face</b></td><td>Quadruple panneau standard face à la caméra ; comportement par défaut.</td></tr><tr><td><b>Face à la caméra du monde vers le haut</b></td><td>Face à la caméra, mais tournant seulement sur l'axe vertical vers le haut du monde <b>Y</b>.</td></tr><tr><td><b>Vélocité parallèle</b></td><td>Aligné parallèlement à leur direction de mouvement.</td></tr><tr><td><b>Vitesse perpendiculaire</b></td><td>Aligné perpendiculairement à leur mouvement de direction.</td></tr></tbody>
Oriération |
---|
Rate
La propriété fréquence détermine le nombre de particules émises par seconde pendant que l'émetteur est Enabled .C'est l'inverse de la fréquence, ce qui signifie qu'un taux de 5 émet une particule toutes les 0,2 secondes.Lorsqu'elle est modifiée, cette propriété n'a aucun effet sur les particules actives.
RotSpeed
La propriété RotSpeed détermine une plage aléatoire de vitesses angulaires pour les particules nouvellement émises, mesurée en degrés par seconde.Une vitesse angulaire aléatoire est choisie lors de l'émission, donc le changement de cette propriété n'affecte pas les particules actives.Cette propriété, ainsi que Rotation, affecte l'angle de l'image de particule rendue.
Les particules à très grande vitesse angulaire peuvent sembler tourner plus lentement ou pas du tout, puisque l'angle de rotation est synchronisé avec la vitesse de rendu du logiciel.Par exemple, si les particules tournent exactement à 360 degrés à chaque cadre, il n'y aura pas de changement apparent en rotation.
Rotation
La propriété Rotation détermine la portée des rotations en degrés pour les particules nouvellement émises, mesurée en degrés.Les valeurs positives sont dans la direction horaire.Cette propriété est généralement définie à [0, 360] pour fournir une rotation complètement aléatoire à de nouvelles particules.RotSpeed influence également la rotation d'une particule au cours de sa vie.
Les modifications de cette valeur ne concernent que les nouvelles particules ; les particules existantes maintiennent la rotation à laquelle elles ont été émises initialement.
La propriété forme défini la forme de l'émetteur sur une boîte de modélisation, une sphère, un cylindre ou un disque.Après avoir fait une sélection, vous pouvez ajuster les propriétés ShapeStyle, ShapeInOut et ShapePartial pour personnaliser encore plus l'émission de particules.Pour des exemples visuels, voir ici .
ShapeInOut
Définit si les particules émettent vers l'extérieur uniquement, vers l'intérieur uniquement, ou dans les deux directions. Pour des exemples visuels, voir ici.
ShapePartial
En fonction de la valeur Shape, cette propriété effectue une action différente :
Pour les cylindres, il spécifie la proportion du rayon supérieur.Une valeur de 0 signifie que le sommet du cylindre a un rayon de zéro, ce qui le rend un cône.Une valeur de 1 signifie que le cylindre n'a pas de déformation.
Pour les disques, il spécifie la proportion du rayon intérieur.Une valeur de 0 signifie que le disque est entièrement fermé (cercle/ellipse), tandis qu'une valeur de 1 signifie que l'émission ne se produit que sur la jante la plus extérieure du disque.Les valeurs entre 0 et 1 émettent d'un anneau avec une certaine épaisseur.
Pour les sphères, il spécifie l'angle hémisphérique à partir duquel les particules émettent.Une valeur de 1 signifie que des particules émettent de toute la sphère ; une valeur de 0,5 signifie que des particules émettent d'une moitié de dôme ; une valeur de 0 signifie que les particules ne s'émettent que d'un seul point au pôle nord.
Pour des exemples visuels, voir ici.
ShapeStyle
Définit l'émission de particules à une émission volumétrique ou à une émission exclusive de surface. Pour des exemples visuels, voir ici.
Size
La propriété taille détermine la taille du monde de toutes les particules actives pendant leur durée de vie individuelle.Cette propriété représente les dimensions du carré Texture pour chaque particule.C'est un NumberSequence qui fonctionne de manière similaire à Transparency .
La taille présente d'une particule est déterminée en interpolant linéairement sur cette séquence en utilisant l'âge de la particule et sa durée de vie totale.Par exemple, si une particule est apparue il y a 2 secondes et a une durée de vie de 4 secondes, la taille sera ce qui est à 50% du chemin à travers le NumberSequence.Pour tout NumberSequenceKeypoint avec une valeur d'enveloppe non nulle, une valeur aléatoire dans la plage d'enveloppe est choisie pour chaque point clé pour chaque particule lorsqu'elle émet.
Speed
La propriété Vitesse détermine une plage aléatoire de vitesses (du minimum au maximum) à laquelle les nouvelles particules émettront, mesurée en studs par seconde.La vitesse de chaque particule est choisie lors de l'émission et s'applique dans le EmissionDirection .Les valeurs négatives provoquent le voyage des particules en arrière.
Notez que le changement de Speed n'affecte pas les particules actives et qu'elles conservent toute la vitesse qu'elles ont déjà.Cependant, Acceleration , Drag , et VelocityInheritance peuvent être utilisés pour affecter la vitesse des particules actives tout au long de leur vie.
SpreadAngle
La propriété Angle de dispersion détermine les angles aléatoires auxquels une particule peut être émise.Par exemple, si le EmissionDirection est Haut (+ Y ), cette Vector2 décrit la taille de la dispersion d'angle aléatoire sur les axes X / Z , en degrés.
Définir un axe à 360 degrés provoquera l'émission de particules dans toutes les directions dans un cercle .Définir les deux à 360 provoquera l'émission de particules dans toutes les directions dans une sphère .
Squash
Permet un dimensionnement non uniforme des particules, contrôlé par courbe tout au long de leur vie.Les valeurs supérieures à 0 font rétrécir les particules horizontalement et grandir verticalement, tandis que les valeurs inférieures à 0 font croître les particules horizontalement et rétrécir verticalement.
Texture
La propriété Texture détermine l'image rendue sur les particules.Cette image est influencée par Color , Transparency , LightInfluence , et LightEmission .Les textures avec arrière-plan transparent fonctionnent mieux pour les particules.
TimeScale
Une valeur entre 0 et 1 qui contrôle la vitesse de l'effet de particule.À 1, il fonctionne à une vitesse normale ; à 0,5, il fonctionne à moitié vitesse ; à 0, il gèle dans le temps.
Transparency
La propriété Transparence détermine la transparence de toutes les particules actives au cours de leur durée de vie individuelle.Il fonctionne de manière similaire à Size dans la façon dont il affecte les particules au fil du temps.En termes de rendu, une valeur de 0 est complètement visible (opaque) et une valeur de 1 est complètement invisible (pas du tout rendue).
La transparence présente d'une particule est déterminée en interpolant linéairement sur cette séquence en utilisant l'âge de la particule et sa durée de vie totale.Par exemple, si une particule est apparue il y a 2 secondes et a une durée de vie de 4 secondes, la transparence sera ce qui est à 50% du chemin à travers le NumberSequence.Pour tout NumberSequenceKeypoint avec une valeur d'enveloppe non nulle, une valeur aléatoire dans la plage d'enveloppe est choisie pour chaque point clé pour chaque particule lorsqu'elle émet.
VelocityInheritance
La propriété héritage de vitesse détermine à quel point de la partie parent la Velocity est héritée par les particules lorsqu'elles sont émises.Une valeur de 0 signifie qu'aucune vitesse n'est héritée, tandis qu'une valeur de 1 signifie que la particule aura exactement la même vitesse que le parent BasePart .
Lorsqu'il est utilisé en conjonction avec Drag, un émetteur de particules peut sembler « perdre » des particules d'une pièce en mouvement.
WindAffectsDrag
Si c'est vrai, les particules émises suivent le force vectorielleWorkspace.GlobalWind. S'applique uniquement si la propriété Drag est supérieure à 0.
ZOffset
La propriété ZOffset détermine la position de rendu en arrière des particules, en studs, sans modifier leur taille sur l'écran.Lorsqu'elle est modifiée, cette propriété affecte à la fois les particules actuelles et futures.Notez que cette propriété accepte des valeurs fractionnées ; ce n'est pas comme GuiObject.ZIndex (un entier).
Les valeurs positives rapprochent les particules de la caméra et les valeurs négatives éloignent les particules.Des valeurs négatives suffisamment négatives peuvent faire rendre des particules à l'intérieur ou derrière la partie parent.
Méthodes
Clear
La méthode Effacer instantanément efface toutes les particules existantes qui ont été émises par le à travers son émission naturelle (non zéro sur un émetteur) ou via .
Retours
Échantillons de code
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
La méthode Émettre fera en sorte que le ParticleEmitter émette instantanément le nombre de particules donné.
Paramètres
Le nombre de particules à émettre.
Retours
Échantillons de code
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