Sign in to follow this  
raptorstrike

collision detection example

Recommended Posts

raptorstrike    181
well ive been puting this section of my project off but now i have to bite the bullet. COLLISION DETECTION ive tried before but was only secsesful with getting a sigle point to do collision detection. Could any of you point me toward a very simple bound box or maybe image based collision detection C++ Dev-Cpp API:SDL

Share this post


Link to post
Share on other sites
wyrzy    430
Have a Look at this

/***********************************************************************/
// Object-to-object reduced bounding-box collision detector:
// http://www.gamedev.net/reference/articles/article735.asp
//
// We check whether 2 sprite objects overlap each other,
// using the so-called reduced rectangles that are 'offset'(scale of 0-1) of
// the original ones.
int Sprite_Collide(CSprite &object1, CSprite &object2, float offset)
{
// We store the coordinates of our reduced rectangles here
double left1, left2;
double right1, right2;
double top1, top2;
double bottom1, bottom2;

// (this is our sprite)
// |---sprite width---|
// A******************* <-|-height*0.1
// **B...............** <-\
// **................** <-\
// **................** <-\
// **................** <-\
// **|---width*0.8--|** <-\
// **................** <-\
// **................** <-\
// **...............C** <---height*0.9
// *******************D
// ^^ width*0.1
// ^^^^^^^^^^^^^^^^^^ width*0.9

// What we do now is store the coordinates of our
// shrunken rectangle inside some variables.
// We make 'left' and 'top' equal the position B on our sprite
// (look at the "drawing") and 'right' and 'bottom' equal the
// position C. (Remember, left1, top1, etc contain the coordinates
// of the first sprite's reduced rectangle and left2, top2 contain
// the coordinated of the second sprite's reduced rectangle)
left1 = object1.getx()+object1.getw()*offset;
left2 = object2.getx()+object2.getw()*offset;
top1 = object1.gety()+object1.geth()*offset;
top2 = object2.gety()+object2.geth()*offset;

right1 = object1.getx()+object1.getw()*(1.0-offset);
right2 = object2.getx()+object2.getw()*(1.0-offset);
bottom1 = object1.gety()+object1.geth()*(1.0-offset);
bottom2 = object2.gety()+object2.geth()*(1.0-offset);

// We now do some little comparing and return 0 if the rectangles
// aren't colliding and 1 if they are.
if (bottom1 < top2) return 0;
if (top1 > bottom2) return 0;
if (right1 < left2) return 0;
if (left1 > right2) return 0;

return 1;
}//end Sprite Collide

/***********************************************************************/

Share this post


Link to post
Share on other sites
raptorstrike    181
ooooooo [looksaround] ive tryed that example before but i inverted the results (return true if they dont collide) and thought it didnt work lol thanks alot it works now i am now VERY near to completing the game all thats left is to make some cool looking enemys (not the blobs ive been working with.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this