File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
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
JavaRanch » Java Forums » Java » Game Development
Bookmark "Collision Detection" Watch "Collision Detection" New topic
Author

Collision Detection

Mark Lockery
Greenhorn

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?

Thanks,
Mark.
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.


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

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

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?

Thank
Aida Evingtar
Greenhorn

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: http://aspose.com/file-tools
 
subject: Collision Detection