Skip to content

ParticleSystem2D ​

EffectsScripts: ParticleSystem2DComponentFeature: Particle System 2D (≈90 KB)

Optional feature

ParticleSystem2D is part of Particle System 2D. A build includes it only when a scene, prefab or script uses it — see Feature cropping.

From a script ​

ts
import { ParticleSystem2DComponent } from "mmpx";

const particleSystem2D = this.entity.TryGetComponent(ParticleSystem2DComponent);

Full API: ParticleSystem2DComponent.

Fields ​

FieldTypeDefaultDescription
Duration
duration
number (0.05 … ∞) (s)5Length of one cycle — emission curves and bursts run over it
Looping
looping
booleantrue
Prewarm
prewarm
booleanfalseStarts as if one full cycle had already run
Start Delay
startDelay
MinMaxCurve (s)0Wait before emission starts (constant or random)
Start Lifetime
startLifetime
MinMaxCurve (s)2How long each particle lives. Curves run over the system's cycle
Start Speed
startSpeed
MinMaxCurve (px/s)200Initial speed along the shape's direction
Separate Size Axes
startSizeSeparate
booleanfalse
Start Size
startSize
MinMaxCurve (px)32Width in pixels (the height follows the texture's aspect)
Start Size Y
startSizeY
MinMaxCurve (px)32
Start Rotation
startRotation
MinMaxCurve (°)0
Flip Rotation
flipRotation
number (0 … 1)0Share of particles that rotate the other way
Start Color
startColor
MinMaxGradient16777215
Gravity Modifier
gravityModifier
MinMaxCurve0× gravity (980 px/s² down). Curves run over each particle's life
Simulation Space
simulationSpace
"local" | "world""local"Local: particles move with the entity. World: they stay where they were emitted (trails)
Simulation Speed
simulationSpeed
number (0 … ∞)1
Use Unscaled Time
useUnscaledTime
booleanfalseIgnore Game.time's time scale (still holds while the game is paused)
Play On Awake
playOnAwake
booleantrue
Max Particles
maxParticles
number (1 … 100000)1000
Stop Action
stopAction
"none" | "disable" | "destroy" | "callback""none"When every particle is gone after a stop or the last cycle: deactivate or destroy the entity, or just send OnParticleSystemStopped (always sent)
Auto Random Seed
autoRandomSeed
booleantrueA new random sequence each play. Off: the same every time (randomSeed)
Random Seed
randomSeed
number0
Emission Enabled
emissionEnabled
booleantrue
Shape Enabled
shapeEnabled
booleantrue
Velocity Enabled
velocityEnabled
booleanfalse
Limit Velocity Enabled
limitVelocityEnabled
booleanfalse
Inherit Velocity Enabled
inheritVelocityEnabled
booleanfalse
Force Enabled
forceEnabled
booleanfalse
Color Over Lifetime Enabled
colorOverLifetimeEnabled
booleanfalse
Color By Speed Enabled
colorBySpeedEnabled
booleanfalse
Size Over Lifetime Enabled
sizeOverLifetimeEnabled
booleanfalse
Size By Speed Enabled
sizeBySpeedEnabled
booleanfalse
Rotation Over Lifetime Enabled
rotationOverLifetimeEnabled
booleanfalse
Rotation By Speed Enabled
rotationBySpeedEnabled
booleanfalse
Noise Enabled
noiseEnabled
booleanfalse
Collision Enabled
collisionEnabled
booleanfalse
Texture Sheet Enabled
textureSheetEnabled
booleanfalse
Trails Enabled
trailsEnabled
booleanfalse

Emission ​

FieldTypeDefaultDescription
Rate Over Time
rateOverTime
MinMaxCurve (/s)10Particles per second. Curves run over the cycle
Rate Over Distance
rateOverDistance
MinMaxCurve (/px)0Particles per pixel the entity moves — trails
Bursts
bursts
json[]Extra particles at set times in the cycle

Shape ​

FieldTypeDefaultDescription
Shape
shape
"cone" | "circle" | "edge" | "rectangle" | "point""cone"
Angle
shapeAngle
number (0 … 90) (°)25Spread either side of up, widening across the base
Radius
shapeRadius
number (0 … ∞) (px)10
Radius Thickness
radiusThickness
number (0 … 1)10 emits from the edge only, 1 from the whole area
Arc
shapeArc
number (0 … 360) (°)360
Mode
arcMode
"random" | "loop" | "pingPong" | "burstSpread""random"Where along the arc / edge: random, sweeping round, back and forth, or each emission spread evenly
Spread
arcSpread
number (0 … 1)0Only emit at multiples of this fraction (0 = anywhere)
Speed
arcSpeed
number (/s)1
Length
shapeLength
number (0 … ∞) (px)100
Shape Width
shapeWidth
number (0 … ∞) (px)100
Shape Height
shapeHeight
number (0 … ∞) (px)100
Emit From Edge
emitFromEdge
booleanfalseEmit from the outline, outwards
Position
shapePosition
[x, y][0,0]
Rotation
shapeRotation
number (°)0
Scale
shapeScale
[x, y][1,1]
Align To Direction
alignToDirection
booleanfalseTurn each particle to face its starting direction
Randomize Direction
randomizeDirection
number (0 … 1)0
Circularize Direction
sphericalizeDirection
number (0 … 1)0Blend towards pointing out from the centre
Randomize Position
randomizePosition
number (0 … ∞) (px)0

Velocity over Lifetime ​

FieldTypeDefaultDescription
Velocity X
velocityX
MinMaxCurve (px/s)0
Velocity Y
velocityY
MinMaxCurve (px/s)0
Space
velocitySpace
"local" | "world""local"
Orbital
orbitalVelocity
MinMaxCurve (°/s)0Circling the emitter (plus Offset)
Offset
orbitalOffset
[x, y][0,0]
Radial
radialVelocity
MinMaxCurve (px/s)0Away from (negative: towards) the orbit centre
Speed Modifier
speedModifier
MinMaxCurve1

Limit Velocity over Lifetime ​

FieldTypeDefaultDescription
Speed
speedLimit
MinMaxCurve (px/s)100
Dampen
dampen
number (0 … 1)0.5How quickly speed over the limit is removed
Drag
drag
MinMaxCurve0Fraction of velocity lost per second
Multiply Drag By Size
multiplyDragBySize
booleanfalse
Multiply Drag By Velocity
multiplyDragByVelocity
booleanfalse

Inherit Velocity ​

FieldTypeDefaultDescription
Mode
inheritVelocityMode
"initial" | "current""initial"Initial: particles keep the entity's velocity at birth. Current: they follow its velocity every frame
Multiplier
inheritVelocity
MinMaxCurve0.5

Force over Lifetime ​

FieldTypeDefaultDescription
Force X
forceX
MinMaxCurve (px/s²)0
Force Y
forceY
MinMaxCurve (px/s²)0
Space
forceSpace
"local" | "world""local"
Randomize
forceRandomize
booleanfalseA random force between the two values every frame (two-value modes)

Color over Lifetime ​

FieldTypeDefaultDescription
Color
colorOverLifetime
MinMaxGradientsee the Inspector

Color by Speed ​

FieldTypeDefaultDescription
Color
colorBySpeed
MinMaxGradientsee the Inspector
Speed Range
colorSpeedRange
[x, y][0,400]

Size over Lifetime ​

FieldTypeDefaultDescription
Separate Axes
sizeSeparateAxes
booleanfalse
Size
sizeOverLifetime
MinMaxCurvesee the Inspector× start size
Size Y
sizeOverLifetimeY
MinMaxCurvesee the Inspector

Size by Speed ​

FieldTypeDefaultDescription
Size
sizeBySpeed
MinMaxCurvesee the Inspector
Speed Range
sizeSpeedRange
[x, y][0,400]

Rotation over Lifetime ​

FieldTypeDefaultDescription
Angular Velocity
angularVelocity
MinMaxCurve (°/s)45

Rotation by Speed ​

FieldTypeDefaultDescription
Angular Velocity
rotationBySpeed
MinMaxCurve (°/s)45
Speed Range
rotationSpeedRange
[x, y][0,400]

Noise ​

FieldTypeDefaultDescription
Strength
noiseStrength
MinMaxCurve (px/s)60
Frequency
noiseFrequency
number (0 … ∞)0.01Noise cells per pixel — lower is smoother
Scroll Speed
noiseScrollSpeed
number0Moves the noise field over time
Octaves
noiseOctaves
number (1 … 4)1
Octave Multiplier
noiseOctaveMultiplier
number (0 … 1)0.5
Octave Scale
noiseOctaveScale
number (1 … 4)2
Position Amount
noisePositionAmount
number1
Rotation Amount
noiseRotationAmount
number (°/s)0
Size Amount
noiseSizeAmount
number (0 … 1)0

Collision ​

FieldTypeDefaultDescription
Plane
collisionPlane
Entity—An entity whose position and up direction (+y) is a floor particles bounce off
Plane 2
collisionPlane2
Entity—
Plane 3
collisionPlane3
Entity—
Bounce
bounce
number (0 … 2)0.5
Dampen
collisionDampen
number (0 … 1)0Speed lost on each hit
Lifetime Loss
lifetimeLoss
number (0 … 1)0Share of its life a particle loses on each hit
Min Kill Speed
minKillSpeed
number (0 … ∞) (px/s)0Particles slower than this after a hit die
Radius Scale
radiusScale
number (0 … 1)1Collision radius as a share of half the size
Send Collision Events
sendCollisionEvents
booleanfalseEmit a particles:collision event (and OnParticleCollision on scripts) per hit

Sub Emitter ​

FieldTypeDefaultDescription
Trigger
subEmitterTrigger
"none" | "birth" | "death" | "collision""none"Make this a sub-emitter of the nearest parent particle system: emit when its particles are born (trails), die or collide
Probability
subEmitterProbability
number (0 … 1)1
Inherit Color
subEmitterInheritColor
booleanfalse
Inherit Size
subEmitterInheritSize
booleanfalse
Inherit Rotation
subEmitterInheritRotation
booleanfalse

Texture Sheet Animation ​

FieldTypeDefaultDescription
Tiles X
tilesX
number (1 … 64)1
Tiles Y
tilesY
number (1 … 64)1
Animation
sheetAnimation
"wholeSheet" | "singleRow""wholeSheet"
Row Mode
sheetRowMode
"custom" | "random""custom"
Row
sheetRow
number (0 … ∞)0
Frame Over Time
frameOverTime
MinMaxCurvesee the Inspector0..1 across the frames, over each particle's life
Start Frame
startFrame
MinMaxCurve0Frame offset (in frames)
Cycles
sheetCycles
number (0.01 … ∞)1Times the animation runs over a life

Trails ​

FieldTypeDefaultDescription
Mode
trailMode
"particles" | "ribbon""particles"Particles: each particle leaves its own trail. Ribbon: one strip joins the particles from youngest to oldest
Ratio
trailRatio
number (0 … 1)1Share of particles that get a trail
Lifetime
trailLifetime
MinMaxCurve0.4How long a trail point lasts, as a share of its particle's life
Min Vertex Distance
minVertexDistance
number (0.5 … ∞) (px)6A new trail point once the particle has moved this far — smaller is smoother
Ribbon Count
ribbonCount
number (1 … 16)1Particles are shared out between this many ribbons
Width over Trail
trailWidth
MinMaxCurvesee the InspectorFrom the head (0) to the tail (1). × the particle's size, or px with Size Affects Width off
Size Affects Width
sizeAffectsWidth
booleantrue
Inherit Particle Color
inheritParticleColor
booleantrue
Color over Lifetime
trailColorOverLifetime
MinMaxGradient16777215Over the particle's life
Color over Trail
trailColorOverTrail
MinMaxGradientsee the InspectorFrom the head (0) to the tail (1)
Texture
trailAssetId
texture asset—Stretched along the trail, its height across it (empty: solid). Drawn under the particles

Renderer ​

FieldTypeDefaultDescription
Texture
assetId
texture asset—Every particle's image (empty: a white square). Texture sheet tiles split it; a spritesheet frame works too
Blend Mode
blendMode
"normal" | "add" | "multiply" | "screen""normal"Add brightens where particles overlap — fire, sparks, magic
Render Mode
renderMode
"billboard" | "stretched""billboard"Stretched: each particle is drawn along its velocity
Length Scale
lengthScale
number (0 … ∞)2
Speed Scale
speedScale
number (0 … ∞)0Extra length per px/s of speed
Sort Mode
sortMode
"youngestInFront" | "oldestInFront""youngestInFront"
Flip X
flipX
number (0 … 1)0
Flip Y
flipY
number (0 … 1)0
Material
material
material asset—A sprite-domain material drawn over all the particles at once

© 2026 PlayAdGentic