JSFiddle - React, Tailwind, and code Playground
by Didier Cauvin
HTML
<canvas id="mycanvas" width=400 height=400>
canvas not supported
</canvas>
JavaScript
var canvas = document.getElementById("mycanvas");
var context = canvas.getContext("2d");
var player = createBox({
x: 0,
y: 0,
width: 10,
height: 10,
gravity: 0.4
});
var block1 = createBox({
x: 0,
y: 350,
width: 20,
height: 20
});
var block2 = createBox({
x: 25,
y: 350,
width: 20,
height: 20
})
var block3 = createBox({
x: 25,
y: 290,
width: 20,
height: 20
})
var bounce = -8;
var friction = 1.6;
player.collisioners = [block1, block2, block3];
var collisionManager = createCollisionManager();
loop();
function loop() {
requestAnimationFrame(loop);
context.clearRect(0, 0, 400, 400);
player.position.x += player.velX;
if (player.gravity > 0) {
player.velY += player.gravity;
player.position.y += player.velY;
}
collisionManager.check(player, function(info) {
if (info.where === 'bottom') {
player.velY = -player.velY;
//player.position.y = info.collisioner.position.y + info.collisioner.height;
}
if (info.where === 'top') {
player.isJumping = false;
player.isGrounded = true;
//player.position.y = (info.collisioner.position.y - player.height);
//player.position.x += info.collisioner.velX;
player.velY = 0;
}
if (info.where === 'left') {
player.isJumping = false;
//player.position.x = info.collisioner.position.x - player.width;
}
if (info.where === 'right') {
player.isJumping = false;
//player.position.x = info.collisioner.position.x + info.collisioner.width;
}
});
block1.render();
block2.render();
block3.render();
player.render();
}
function createCollisionManager() {
var that = {};
function boxWithBoxCollision(obj1, obj2) {
var c1X = obj1.getCenterPositionX();
var c2X = obj2.getCenterPositionX();
var c1Y =...