open gl 2d collision detection

Started by
6 comments, last by hello_there 22 years, 4 months ago
my game was progressing nicely untill i got to making collision detection. i just can figure it out . Can someone please help me. my game is like the 2d zelda game. i''ve spent hours trying to figure out a way but nothing works.
____________________________________________________________How could hell be worse?
Advertisement
OpenGL has nothing to do with collision detection. i presume if you are doing a 2D based game you will be using a tile/index based system. all you would need to do is test the tile next to the players current position in the direction the player is trying to go. if the tile index in the destination is the index of a blocking object (i.e a tree) then deny the player from moving. otherwise allow the player to move in that direction.

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.
To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.
Collision to what? The world (walls, pillars, etc.), sprites, objects? All three may require different wats of detecting collision. Unless you want to bust out the trigonometry in your game and resigning the entire map and engine, you''re probably going to use a simple method. Just think rectangles overlapping, or distance formula (for circula collisions).
Collision detection in 2d is fairly easy as long as you remember that a game is nothing but a thin layer of pretty (and sometimes not so pretty) pictures on top of a very thick layer of numbers.

Lets say that an object with a radius of 1.0f is falling twords the ground, which is at 0.0f on the y axis. Each frame you will decrement the y value of your falling object, also do a test so see if the object is a 1.0f on the y axis, if it is then it is touching the ground (remember, the object sticks out by 1.0f).
It is fairly easy to do unless your object are strangly shapped, square and circle collisions are easy so try to make your objects with that in mind. Also, try not to check for collisions unless you have to, it can take along time if you have alot of objects.

Jason Mickela
ICQ : 873518
E-Mail: jmickela@sbcglobal.net
------------------------------
"Evil attacks from all sides
but the greatest evil attacks
from within." Me
------------------------------
"The paths of glory lead but to the grave." - Thomas GrayMy Stupid BlogMy Online Photo Gallery
can you please post a bit of code for an example?
____________________________________________________________How could hell be worse?
u gotta be kidding.

try "www.google.com" and searching under "2d collision detection+examples+programming".

To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.
To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.
i''m only a newbie.(obviously)
this is my first game i know i should have made something easier but this is sort of easy exept for collision detection.
____________________________________________________________How could hell be worse?
Some semi-pseudocode semi-real for 2d bounding box collision:
  bool PointInsideBox(box_t box, point_t point){  if (point.x >= box.x && point.x <= box.x+box.width)    if (point.y >= box.y && point.y <= box.y+box.height)      return true;  return false;}bool CheckCollision(box_t box1, box_t box2){  int i;  for (i=0;i<4;i++) {    if (PointInsideBox(box1,box2.corner[i]))      return true;    if (PointInsideBox(box2,box1.corner[i]))      return true;  }  return false;}  
-----------------------"When I have a problem on an Nvidia, I assume that it is my fault. With anyone else's drivers, I assume it is their fault" - John Carmack

This topic is closed to new replies.

Advertisement