---
title: SKEmitterNode
framework: spritekit
role: symbol
role_heading: Class
path: spritekit/skemitternode
---

# SKEmitterNode

A source of various particle effects.

## Declaration

```swift
class SKEmitterNode
```

## Mentioned in

Using Keyframe Sequence to effect Custom Interpolation Creating Particle Effects Animate the Warping of a Sprite Animating Particle Properties Across Disparate Values

## Overview

Overview A SKEmitterNode object is a node that automatically creates and renders small particle sprites. Particles are privately owned by SpriteKit—your game cannot access the generated sprites. For example, you cannot add physics shapes to particles. Emitter nodes are often used to create smoke, fire, sparks, and other particle effects. A particle is similar to an SKSpriteNode object; it renders a textured or untextured image that is sized, colorized, and blended into the scene. However, particles differ from sprites in two important ways: A particle’s texture is always stretched uniformly. Particles are not represented by objects in SpriteKit. This means you cannot perform node-related tasks on particles, nor can you associate physics bodies with particles to make them interact with other content. Although there is no visible class representing particles added by the emitter node, you can think of a particle as having properties like any other object. Particles are purely visual objects, and their behavior is entirely defined by the emitter node that created them. The emitter node contains many properties to control the behavior of the particles it generates, including: The birth rate and lifetime of the particle. You can also specify the order in which the particles are rendered and the maximum number of particles that are created before the emitter turns itself off. The starting values of the particle, including its position, orientation, color, and size. You can choose to have these starting values randomized. The changes to apply to the particle over its lifetime. Typically, these are specified as a rate of change over time. For example, you might specify that a particle rotates at a particular rate, in radians per second. The emitter automatically updates the particle data for each frame. In most cases, you can also create more sophisticated behaviors using keyframe sequences. For example, you might specify a keyframe sequence for a particle so that it starts out small, scales up to a larger size, then shrinks before dying.

## Topics

### First Steps

- [Creating Particle Effects](spritekit/creating-particle-effects.md)

### Choosing Which Node in the Scene Emits Particles

- [Changing the Location of Particles in Your Scene](spritekit/changing-the-location-of-particles-in-your-scene.md)
- [targetNode](spritekit/skemitternode/targetnode.md)

### Controlling When Particles Are Created

- [advanceSimulationTime(_:)](spritekit/skemitternode/advancesimulationtime(_:).md)
- [resetSimulation()](spritekit/skemitternode/resetsimulation().md)
- [particleBirthRate](spritekit/skemitternode/particlebirthrate.md)
- [numParticlesToEmit](spritekit/skemitternode/numparticlestoemit.md)

### Controlling the Rendering Order of an Emitter’s Particles

- [particleRenderOrder](spritekit/skemitternode/particlerenderorder.md)
- [SKParticleRenderOrder](spritekit/skparticlerenderorder.md)

### Controlling Particle Lifetime

- [particleLifetime](spritekit/skemitternode/particlelifetime.md)
- [particleLifetimeRange](spritekit/skemitternode/particlelifetimerange.md)

### Controlling Particle Position

- [particlePosition](spritekit/skemitternode/particleposition.md)
- [particlePositionRange](spritekit/skemitternode/particlepositionrange.md)
- [particleZPosition](spritekit/skemitternode/particlezposition.md)
- [particleZPositionRange](spritekit/skemitternode/particlezpositionrange.md)

### Controlling Particle Velocity and Acceleration

- [particleSpeed](spritekit/skemitternode/particlespeed.md)
- [particleSpeedRange](spritekit/skemitternode/particlespeedrange.md)
- [emissionAngle](spritekit/skemitternode/emissionangle.md)
- [emissionAngleRange](spritekit/skemitternode/emissionanglerange.md)
- [xAcceleration](spritekit/skemitternode/xacceleration.md)
- [yAcceleration](spritekit/skemitternode/yacceleration.md)
- [particleZPositionSpeed](spritekit/skemitternode/particlezpositionspeed.md)

### Adjusting a Particle’s Rotation

- [particleRotation](spritekit/skemitternode/particlerotation.md)
- [particleRotationRange](spritekit/skemitternode/particlerotationrange.md)
- [particleRotationSpeed](spritekit/skemitternode/particlerotationspeed.md)

### Scaling Particles by a Factor

- [particleScale](spritekit/skemitternode/particlescale.md)
- [particleScaleRange](spritekit/skemitternode/particlescalerange.md)
- [particleScaleSpeed](spritekit/skemitternode/particlescalespeed.md)
- [particleScaleSequence](spritekit/skemitternode/particlescalesequence.md)

### Changing a Particle’s Source Image and Size

- [particleTexture](spritekit/skemitternode/particletexture.md)
- [particleSize](spritekit/skemitternode/particlesize.md)

### Configuring Particle Color

- [particleColorSequence](spritekit/skemitternode/particlecolorsequence.md)
- [particleColor](spritekit/skemitternode/particlecolor.md)
- [particleColorAlphaRange](spritekit/skemitternode/particlecoloralpharange.md)
- [particleColorBlueRange](spritekit/skemitternode/particlecolorbluerange.md)
- [particleColorGreenRange](spritekit/skemitternode/particlecolorgreenrange.md)
- [particleColorRedRange](spritekit/skemitternode/particlecolorredrange.md)
- [particleColorAlphaSpeed](spritekit/skemitternode/particlecoloralphaspeed.md)
- [particleColorBlueSpeed](spritekit/skemitternode/particlecolorbluespeed.md)
- [particleColorGreenSpeed](spritekit/skemitternode/particlecolorgreenspeed.md)
- [particleColorRedSpeed](spritekit/skemitternode/particlecolorredspeed.md)

### Controlling How the Texture is Blended with Particle Color

- [particleColorBlendFactorSequence](spritekit/skemitternode/particlecolorblendfactorsequence.md)
- [particleColorBlendFactor](spritekit/skemitternode/particlecolorblendfactor.md)
- [particleColorBlendFactorRange](spritekit/skemitternode/particlecolorblendfactorrange.md)
- [particleColorBlendFactorSpeed](spritekit/skemitternode/particlecolorblendfactorspeed.md)

### Blending Particles with the Framebuffer

- [particleBlendMode](spritekit/skemitternode/particleblendmode.md)
- [particleAlphaSequence](spritekit/skemitternode/particlealphasequence.md)
- [particleAlpha](spritekit/skemitternode/particlealpha.md)
- [particleAlphaRange](spritekit/skemitternode/particlealpharange.md)
- [particleAlphaSpeed](spritekit/skemitternode/particlealphaspeed.md)

### Animating Particles

- [Animating Particle Properties Across Disparate Values](spritekit/animating-particle-properties-across-disparate-values.md)
- [particleAction](spritekit/skemitternode/particleaction.md)

### Applying Physics Fields to the Particles

- [fieldBitMask](spritekit/skemitternode/fieldbitmask.md)

### Taking Full Control of Particle Drawing with a Shader

- [Getting Started with Particle Shaders](spritekit/getting-started-with-particle-shaders.md)
- [shader](spritekit/skemitternode/shader.md)
- [attributeValues](spritekit/skemitternode/attributevalues.md)
- [setValue(_:forAttribute:)](spritekit/skemitternode/setvalue(_:forattribute:).md)
- [value(forAttributeNamed:)](spritekit/skemitternode/value(forattributenamed:).md)

### Maximizing Particle Run-Time Performance

- [Optimizing Emitter Node Performance](spritekit/optimizing-emitter-node-performance.md)

## Relationships

### Inherits From

- [SKNode](spritekit/sknode.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)
- [NSStandardKeyBindingResponding](appkit/nsstandardkeybindingresponding.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [NSUserActivityRestoring](appkit/nsuseractivityrestoring.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UICoordinateSpace](uikit/uicoordinatespace.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIFocusItem](uikit/uifocusitem.md)
- [UIFocusItemContainer](uikit/uifocusitemcontainer.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### Nodes that Draw

- [Maximizing Node Drawing Performance](spritekit/maximizing-node-drawing-performance.md)
- [SKSpriteNode](spritekit/skspritenode.md)
- [SKShapeNode](spritekit/skshapenode.md)
- [SKLabelNode](spritekit/sklabelnode.md)
- [SKVideoNode](spritekit/skvideonode.md)
- [SKTileMapNode](spritekit/sktilemapnode.md)
- [SK3DNode](spritekit/sk3dnode.md)
