View more

View more

View more

Image of the Day Submit

IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

open gl 2d collision detection

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

7 replies to this topic

#1hello_there  Members

Posted 28 November 2001 - 11:52 AM

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.

#2jenova  Members

Posted 28 November 2001 - 12:05 PM

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.

#3DraconicArchmage  Members

Posted 28 November 2001 - 12:07 PM

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).

#4griffenjam  Members

Posted 28 November 2001 - 12:11 PM

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
------------------------------

#5hello_there  Members

Posted 28 November 2001 - 01:23 PM

can you please post a bit of code for an example?

#6jenova  Members

Posted 28 November 2001 - 01:35 PM

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.

#7hello_there  Members

Posted 28 November 2001 - 05:17 PM

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.

#8Maximus  Members

Posted 29 November 2001 - 06:40 PM

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;}

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.