Make an object slide around an obstacle

Posted by Isaiah on Game Development See other posts from Game Development or by Isaiah
Published on 2011-11-10T17:22:23Z Indexed on 2011/11/11 18:29 UTC
Read the original article Hit count: 273

I have path areas set up in a game I'm making for canvas/html5 and have got it working to keep the player within these areas. I have a function isOut(boundary, x, y) that returns true if the point is outside the boundary. What I do is check only the new position x/y separately with the corresponding old position x/y. Then if each one is out I assign them the past value from the frame before. The old positions are kept in a variable from a closure I made.

like this:

opos = [x,y];//old position
npos = [x,y];//new position

if(isOut(bound, npos[0], opos[1])){
    npos[0] = opos[0]; //assign it the old x position
}
if(isOut(bound, opos[0], npos[1])){
    npos[1] = opos[1]; //assign it the old y position
}

It looks nice and works good at certain angles, but if your boundary has diagonal regions it results in jittery motion. What's happening is the y pos exits the area while x doesn't and continues pushing the player to the side, once it has moved the player to the side a bit the player can move forward and then the y exits again and the whole process repeats. Anyone know how I may be able to achieve a smoother slide? I have access to the player's velocity vector, the angle, and the speed(when used with the angle). I can move the play with either angle/speed or x/yvelocities as I've built in backups to translate one to the other if either have been altered manually.

© Game Development or respective owner

Related posts about math

Related posts about programming