This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Game Development and the fly likes Collision Detection Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Game Development
Bookmark "Collision Detection" Watch "Collision Detection" New topic

Collision Detection

Mark Lockery

Joined: Jun 04, 2004
Posts: 19
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?

Jeroen Wenting
Ranch Hand

Joined: Oct 12, 2000
Posts: 5093
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

Joined: Apr 04, 2004
Posts: 815
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.

I've heard it takes forever to grow a woman from the ground
Jeroen Wenting
Ranch Hand

Joined: Oct 12, 2000
Posts: 5093
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

Joined: Jun 04, 2004
Posts: 19
Thanks for the ideas
Wai Hung

Joined: Apr 15, 2004
Posts: 23
Why do we need to have multiple overlapping bounding circles for an object to make it as accurate as bounding rectangle?

Aida Evingtar

Joined: Apr 25, 2005
Posts: 3
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

Joined: Aug 07, 2003
Posts: 1646
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.
I agree. Here's the link:
subject: Collision Detection
Similar Threads
How to implement projection for jsr184 animation?
games dev job
Java Game Programming
Making a Tetris clone