# 2d-particle-system-modified **Repository Path**: haozexu/2d-particle-system-modified ## Basic Information - **Project Name**: 2d-particle-system-modified - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-01 - **Last Updated**: 2026-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2D Particle System using Canvas A simple lightweight 2D particle system using Canvas. - Multiple particle systems can be bound to the same canvas - Particles speed remain the same regardless of the refreshing rate - Less than 10 KB - Refresh rate independant : particles have the same behaviour between 60hz / 144hz monitors [Check the demo page](https://arkounay.github.io/2D-Canvas-Image-Particles/) ## Usage - Create a canvas - Import dist/2d-canvas-image-particles.min.js - Create a new ParticleSystem : `new ParticleSystem(canvas_id, image_path, options);` ### Example You can check the [demo page](https://arkounay.github.io/2D-Canvas-Image-Particles/)'s sources for more examples. You can also use an HTMLCanvasElement instead of an id. ### Usage with npm / Yarn `npm install 2d-canvas-image-particles` or `yarn add 2d-canvas-image-particles`. Then you can import it and use it ```js import '2d-canvas-image-particles'; // ... new ParticleSystem('id', 'images/default-particle.png', { cursorMode: CursorMode.Zoom }); ``` You will need to specify your own images. ### Options { maxParticles: number, velocityAngle: [min, max], speed: [min, max], rotationStartAngle: [min, max], cursorMode: CursorMode, // (CursorMode.Bounce, CursorMode.Zoom, CursorMode.Light, CursorMode.Follow), rotationMode: RotationMode, // (RotationMode.None, RotationMode.Random, RotationMode.FollowVelocity) rotationSpeed: [min, max], rotationSpeedSizeScale: number minimumRotationSpeed: number // if min is negative and max is positive tints: [new Tint('#hexColor', opacity)], width: [min, max], height: [min, max], addOnClickNb: number, density: number, cursorRadius: number } #### Cursor Modes * CursorMode.**Bounce**: particles will bounce off the cursor. * CursorMode.**Zoom**: the closer the cursor is, the bigger the particles are. * CursorMode.**Light**: works with Tint. Particles will enlight when cursor is close. * CursorMode.**Follow**: generates particles that are following the cursor. #### Rotation Modes * RotationMode.**None** * RotationMode.**Random** * RotationMode.**FollowVelocity**: Will follow the specified velocity (use it with _CursorMode.Bounce_ so the particles go back to their base velocity, this is used for the rain example) ## Build from sources - `npm install` - `npm run build` ## IE Support - IE9+