Moving around with friction
HTML
<canvas id="canvas"></canvas>
CSS
html, body {
margin: 0;
padding: 0;
background: #011d04;
}
canvas {
width: 100%;
height: 100%;
}
JavaScript
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");
var width = 800;
canvas.width = canvas.height = 800;
var x = width/2,
y = width/2,
velY = 0,
velX = 0,
speed = 8,
friction = 0.98,
keys = [];
function update() {
requestAnimationFrame(update);
if (keys[38]) {
if (velY > -speed) {
velY--;
}
}
if (keys[40]) {
if (velY < speed) {
velY++;
}
}
if (keys[39]) {
if (velX < speed) {
velX++;
}
}
if (keys[37]) {
if (velX > -speed) {
velX--;
}
}
velY *= friction;
y += velY;
velX *= friction;
x += velX;
if (x >= width) {
x = width;
} else if (x <= 5) {
x = 5;
}
if (y > width) {
y = width;
} else if (y <= 5) {
y = 5;
}
ctx.clearRect(0, 0, width, width);
ctx.beginPath();
ctx.arc(x, y, 50, 0, Math.PI * 2);
ctx.fillStyle = '#0145be';
ctx.fill();
ctx.strokeStyle = '#011d04';
ctx.lineWidth = 5;
ctx.stroke();
}
update();
document.body.addEventListener("keydown", function (e) {
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function (e) {
keys[e.keyCode] = false;
});