Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Collision Detection

 
Mark Lockery
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm making a commander keen type game at the moment. Can anyone suggest the best way to implement collision detection (with enemies, landscape and the like) into the game?

Thanks,
Mark.
 
Jeroen Wenting
Ranch Hand
Posts: 5093
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
give everything a bounding box.
Keep track of the coordinates of those bounding boxes and calculate when two or more of them intersect.
 
Nick George
Ranch Hand
Posts: 815
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm a big fan of bounding circles... you need alot less comparisons. Just check if the distance between the two centers is less than the sum of the radii.
 
Jeroen Wenting
Ranch Hand
Posts: 5093
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
same principle but often less accurate unless you have multiple overlapping bounding circles for an object (or stretch the circles into ellipses in which case you're probably cheaper off using rectangles).
 
Mark Lockery
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for the ideas
 
Wai Hung
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why do we need to have multiple overlapping bounding circles for an object to make it as accurate as bounding rectangle?

Thank
 
Aida Evingtar
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
wait- how do you give an image a bounding circle?
And how do you incorporate the walls of the drawing panel into the collision? Do you need a collision class or something?
 
David Harkness
Ranch Hand
Posts: 1646
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The same way you give it a bounding rectangle, I would guess: choose a center and radius that completely encloses the sprite. This is just your first level detection. If two circles intersect, then you can use the accurate yet more expensive collision detection. If they don't intersect, no need to do a more accurate test.

Just to be clear, bounding regions give you a "they might intersect or they absolutely do not intersect" test.

Also, if you're trying to scrape every last bit of performance out, are using circles, and are doing a lot of first-level collision detection, you don't need to take the square root of the distance between two points. You can instead square all the distances at which a collision takes place and compare against them.

How do you use these for collisions with the map versus other moving objects? I would guess you use something entirely different, but I didn't read that far into the game programming books I got.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic