Sign in to follow this  
samsandeep_e

Collision Detection HELP! openGL SDL c++, 2D top down racing game

Recommended Posts

Hi,

 

I'm trying to build a simple top down car racing game using SDL, I'm using openGL for rendering.  I've drawn the track using parallel bezier curves and taking the points and drawing them as Quads with texture.  I've got the car physics up and running.  

Now, I would like start off with the collision between the car and the track.  Could anyone help me out by giving a simple and practical solution for this.  

Share this post


Link to post
Share on other sites

Ive never used openGL but if the theory is the same, you need to constantly compair the coordinates of the front, back, left, right of your cars with one another, then set up conditions when the cars are toutching to apply the collision physics.

 

//checks if the x coordinates of both objects are within the same range

"if (starting car1 x > starting car2 x ) and (ending car1 x < ending car 1 x) then

{

     ///// checks if y coordinates of both objects are in the same range

      if (srarting car1 y > starting car2 y) and (ending car1 y < ending car2 y) then

     {

           ///apply physics

     }

}

 

the theory is the same for the track. though i think you would need to change the ands to ors and reverse the symbols.

since you have a curved track you may need to use an algorything to calculate the points on the curve to compair to.

Edited by JinixVomitorium

Share this post


Link to post
Share on other sites
Ive never used openGL but if the theory is the same, you need to constantly compair the coordinates of the front, back, left, right of your cars with one another, then set up conditions when the cars are toutching to apply the collision physics.

 

//checks if the x coordinates of both objects are within the same range

"if (starting car1 x > starting car2 x ) and (ending car1 x < ending car 1 x) then

{

     ///// checks if y coordinates of both objects are in the same range

      if (srarting car1 y > starting car2 y) and (ending car1 y < ending car2 y) then

     {

           ///apply physics

     }

}

 

Thanks for the reply.

 

But I'm first looking to check the collision between the track edges and the car, so the car always stays in the track.  Currently there are no AI cars, I'm planning to do that after the car-track collision is fixed.

Share this post


Link to post
Share on other sites

Its the same method. compare the left side of the car coordinates to the left side of the track coordinates, and the right side of the car coordinates to the right side of the track coordinates. As i said, the best way i can think of to map out the track coordinates is using calculus to find the curve x,y.

then when the condition that the curve coordinates equals the car coordinates, set the car x coordinates equal to the curve x coordinates - 1.

thae hardest part for you is calculating the coordinates of the track. search up some calculus equations.

 

if car.x <= track.left

{ car.x = track.left + 1}

if car.x >= track.right

{ car.x = track.right - (car.x + car.width) - 1 }

Edited by JinixVomitorium

Share this post


Link to post
Share on other sites
Its the same method. compare the left side of the car coordinates to the left side of the track coordinates, and the right side of the car coordinates to the right side of the track coordinates. As i said, the best way i can think of to map out the track coordinates is using calculus to find the curve x,y.

then when the condition that the curve coordinates equals the car coordinates, set the car x coordinates equal to the curve x coordinates - 1.

thae hardest part for you is calculating the coordinates of the track. search up some calculus equations.

 

if car.x <= track.left

{ car.x = track.left + 1}

if car.x >= track.right

{ car.x = track.right - (car.x + car.width) - 1 }

 

Thanks.

 

I already have the co-ordinates for the track.  I've drawn the track by drawing many bezier curves from quadratic equations, where the last point of the first curve is the first point of the second curve and so on.  I have fixed distance for the width of the track, so i draw the other side as well.  So, i guess i have all the points needed to calculate the collision.  

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