• Advertisement
Sign in to follow this  

Collision Detection

This topic is 2137 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Well, Iv'e been trying to implement collision detection to a ball and a plane surface, supposely a rectangle.
Theres a lot of rectangles, I store them in a vector.
By far, i havent been impressed by the collision detection, Any help if im doing it wrong?


//This is how i store a vector of rectangles;
static std::vector<std::vector<Bricks> > Level(sizeof(map)/sizeof(*map), std::vector<Bricks>(sizeof(map)/sizeof(*map)));

//Collision detection
bool Brick::Collide( float x, float y, float r )
{
float X, Y;
for( size_t xSize = 0; xSize < Level.size(); xSize++ )
{
for( size_t ySize = 0; ySize < Level[xSize].size(); ySize++ )
{
if(Level[xSize][ySize].alive)
{
if( x < Level[xSize][ySize].x )
{
X = Level[xSize][ySize].x;
}
else if( x > Level[xSize][ySize].x + Level[xSize][ySize].w )
{
X = Level[xSize][ySize].x + Level[xSize][ySize].w;
}
else
{
X = x;
}
if( y < Level[xSize][ySize].y )
{
Y = Level[xSize][ySize].y;
}
else if( y > Level[xSize][ySize].y + Level[xSize][ySize].h )
{
Y = Level[xSize][ySize].y + Level[xSize][ySize].h;
}
else
{
Y = y;
}
if( sqrt( pow((long double)X-x, 2)+pow((long double)Y-y, 2)) < r )
{
return true;
}
}
}
}
return false;
}



Can anyone help me out, To do a almost-perfect collision detection.
Also, How do i implement collision for the sides of the rectangles, Since the ball is a moving object, when the ball hits the sides, It goes crazy, like zigzag or something.
Thanks.

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement