Smooth top down movement(tutorial)

I realized that there is nothing on here that helps people create smooth movement for top down games so here it is.(edit: this works best on 20-30fps)

default
//resets movement
speedY = 0;
speedX = 0;
update
//makes it so the player can move
this.x += speedX;
this.y += speedY;
//adds acceleration and deceleration
speedY = speedY * 0.8;
speedX = speedX * 0.8;
keyDown
//movement stuff
const maxSpeed = 7;
let dx = 0;
let dy = 0;
if (isKeyDown(‘left’) || isKeyDown(‘a’)) {
dx -= maxSpeed;
}
if (isKeyDown(‘right’) || isKeyDown(‘d’)) {
dx += maxSpeed;
}
if (isKeyDown(‘up’) || isKeyDown(‘w’)) {
dy -= maxSpeed;
}
if (isKeyDown(‘down’) || isKeyDown (‘s’)) {
dy += maxSpeed;
}
const magnitude = Math.sqrt(dx + dy);
if (magnitude > maxSpeed) {
dx = (dx / magnitude) * maxSpeed;
dy = (dy / magnitude) * maxSpeed;
}
speedX = dx;
speedY = dy;

2 Likes