Ghost in the Mirror: A pale woman seeps into a dark oval mirror and screams as red cracks race out from her face; the glass bursts toward the camera in red mist and glints, shards fall, then the mirror flies back together.

Ghost in the Mirror

A pale woman seeps into a dark oval mirror and screams as red cracks race out from her face; the glass bursts toward the camera in red mist and glints, shards fall, then the mirror flies back together. A seamless 2D haunted mirror scare.

Ghost in the Mirror is an HD effect that loops seamlessly every 3.6 seconds, drawn on a 320 by 384 canvas. It is built from 7 particle emitters.

Colour

Recolours the preview and the free downloads.

Free download with a transparent background, cropped to the effect, 108 frames at 30 fps. Use it in commercial games, no credit needed.

Licence: use it in any project, including paid commercial games such as a game sold on Steam. There is no per-project licence to buy and no credit needed. Terms.

Roblox: the download is a flipbook for a ParticleEmitter. Set FlipbookLayout to Grid8x8, FlipbookMode to OneShot and Lifetime to 3.6, then emit one particle per cycle. Roblox setup.

REMIX WITH AI

Try:

Left empty, it just opens in the agent, free. Each change is one AI build, and you start with free builds.

Engine data for Unity, Godot, GameMaker and Aseprite comes with a plan: open it in the studio.

OPEN IN THE STUDIO

Change the colours, timing or size, or export for Unity, Godot 4, GameMaker, Phaser, PixiJS and Aseprite.

Try variations: new colours, motion and shapes of this effect, free in the studio.

FRAME BY FRAME

8 evenly spaced moments across the 3.6 s loop.

Ghost in the Mirror at 8 moments, from 0 s to 3.15 s

HOW IT'S MADE

Ghost in the Mirror stacks 7 particle emitters, each with its own job. Techniques worth a look: a sprite dissolve, collisions, keyframed parameters and post filters (bloom, vignette and chromatic aberration). 2 scene layers (ground and props) show in the studio for context and stay out of every export.

It loops seamlessly every 3.6 s, and 7 of its layers fire in bursts, so it pulses instead of flowing evenly. Start times are staggered from 0 s to 2.55 s, so the layers arrive one after another. To change its colour, select "Red mist" in the studio and edit Colour A and Colour B. Size on the same layer sets how big its particles are. The colour swatches by the downloads recolour every layer at once.

Layers, in draw order

  1. Mirror glassparticlesOne burst of 80 shards at 1.55 s. They are flung outward, fall under gravity and bounce when they hit something.
  2. Mirror glassparticlesOne burst of 80 shards at 2.55 s. They fly in and form a shape.
  3. Ghost womanspriteA placed image. Extras: dissolve and keyframed motion.
  4. Crack glowparticles / additiveA single particle at 1.05 s. It grows as it ages. Colour: red.
  5. Break flashparticles / additiveA single particle at 1.55 s. It grows as it ages. Colour: pale red.
  6. Red mistparticlesOne burst of 16 image sprites from a disc at 1.55 s. They grow as they age, spin and slow down with drag. Colour: deep red.
  7. Glass glintsparticles / additiveOne burst of 30 stars from a disc at 1.55 s. They fall under gravity and shrink as they age. Colours range between white and pale red.
  8. Glass dustparticlesOne burst of 40 shards from a disc at 1.55 s. They fall under gravity, bounce when they hit something and spin. Colours range between pale blue and grey.

DETAILS

Length
3.6 seconds, seamless loop
Canvas
320 x 384, HD
Layers
7 emitters
Blend
Mostly normal
Colours
whitepale redreddeep red
Sprites
ParticleFX Realism by ParticleFX Studio (CC0), Kenney Particle Pack by Kenney (CC0)
Tags
mirror, ghost, haunted, shatter, glass, cursed, horror, scare

USING IT IN YOUR GAME

Phaser, PixiJS
The PNG sheet is a plain grid of frames that both can slice. A TexturePacker JSON atlas comes with a plan, from the studio.
Unity
Import the PNG sheet as a Sprite with Mode set to Multiple and slice it, or open the effect in the studio for a ready-made grid.
Godot 4, GameMaker, Aseprite
Open it in the studio and pick your engine in Export: with a plan, it writes the files that engine imports.
Web and chat
The GIF plays anywhere; the APNG keeps soft edges on any background.

Step by step: Unity, Godot 4, Roblox, GameMaker, Phaser and PixiJS, Aseprite, Web games (live runtime).

MORE Horror & Spooky

YOU MIGHT ALSO LIKE

All Horror & Spooky effects or the full library.