Published
Edited
Jun 8, 2022
1 fork
Insert cell
Insert cell
Insert cell
r2d = import('https://cdn.skypack.dev/@dimforge/rapier2d-compat')
Insert cell
r2d.init().then(() => {
// Run the simulation.
// Use the RAPIER module here.
let gravity = { x: 0.0, y: -9.81 };
let world = new r2d.World(gravity);
// Create the ground
let groundColliderDesc = r2d.ColliderDesc.cuboid(10.0, 0.1);
world.createCollider(groundColliderDesc);

// Create a dynamic rigid-body.
let rigidBodyDesc = r2d.RigidBodyDesc.dynamic()
.setTranslation(0.0, 1.0);
let rigidBody = world.createRigidBody(rigidBodyDesc);
// Create a cuboid collider attached to the dynamic rigidBody.
let colliderDesc = r2d.ColliderDesc.cuboid(0.5, 0.5);
let collider = world.createCollider(colliderDesc, rigidBody);

// Game loop. Replace by your own game loop system.
let gameLoop = () => {
// Ste the simulation forward.
world.step();

// Get and print the rigid-body's position.
let position = rigidBody.translation();
console.log("Rigid-body position: ", position.x, position.y);
document.getElementById('output').innerHTML = `Rigid-body position: ${position.x}, ${position.y}`
setTimeout(gameLoop, 16);
};
gameLoop();
});
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more