Collision detection between a sprite and rectangle in canvas
Posted
by
Andy
on Game Development
See other posts from Game Development
or by Andy
Published on 2011-11-02T23:42:07Z
Indexed on
2011/11/23
10:12 UTC
Read the original article
Hit count: 248
I'm building a Javascript + canvas game which is essentially a platformer. I have the player all set up and he's running, jumping and falling, but I'm having trouble with the collision detection between the player and blocks (the blocks will essentially be the platforms that the player moves on).
The blocks are stored in an array like this:
var blockList = [[50, 400, 100, 100]];
And drawn to the canvas using this:
this.draw = function() {
c.fillRect(blockList[0][0], blockList[0][1], 100, 100);
}
I'm checking for collisions using something along these lines in the player object:
this.update = function() {
// Check for collitions with blocks
for(var i = 0; i < blockList.length; i++) {
if((player.xpos + 34) > blockList[i][0] && player.ypos > blockList[i][1]) {
player.xpos = blockList[i][0] - 28;
return false;
}
}
// Other code to move the player based on keyboard input etc
}
The idea is if the player will collide with a block in the next game update (the game uses a main loop running at 60Htz), the function will return false and exit, thus meaning the player won't move.
Unfortunately, that only works when the player hits the left side of the block, and I can't work out how to make it so the player stops if it hits any side of the block. I have the properties player.xpos
and player.ypos
to help here.
© Game Development or respective owner