colliding_balls
v1.10.0
Published
This is simple module that will generate a canvas which will have balls that can collide and move randomly.
Maintainers
Readme
colliding_balls
Credits:
https://spicyyoghurt.com/tutorials/html5-javascript-game-development/collision-detection-physics
Example Usage
import { collidingBalls } from "colliding_balls";
const canvas = collidingBalls({
$ele: document.querySelector("#playground"),
id: "collider",
isStatic: false,
count: 500,
size: 4,
speed: 3,
sameSize: false,
color: ["#ff6b6b", "#ffd93d", "#1dd3b0"], // string | string[] | (ballIndex) => string
hollow: true,
borderWidth: 3,
gravity: 0.08,
followCursor: true,
cursorForce: 0.0015,
});The function still returns the canvas node so you can manipulate it further if required.
Options reference
$ele(required): Container element that will receive the generated canvas.id: Canvas id attribute (defaultmyCanvas).isStatic: Whentrue, renders one frame and stops animating.count: Total balls to spawn (default100).size: Base radius in pixels (default5).speed: Maximum random speed per axis for initial velocity (default7).sameSize: Force every ball to sharesizeinstead of randomizing up to it.color: Fill/stroke color. Accepts a string, an array (cycled), or a callback(index) => string.hollow: Draw rings instead of filled circles. UsesborderWidth.borderWidth: Stroke width for hollow balls (default2).gravity: Downward acceleration added every frame. Set higher for a stronger pull.followCursor: Whentrue, balls accelerate toward the cursor while it is over the canvas.cursorForce: Scalar applied to the cursor attraction (default0.002). Reduce if motion feels too aggressive.
Publishing
- Update
package.jsonwith the desired semantic version (npm version <major|minor|patch>). - Log in to npm if you have not already (
npm login). - Run
npm publish(ornpm run publishto trigger the included helper script). - Create a GitHub release/tag to match the published version so consumers can track changes.
