🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Collision Detection

Started by
4 comments, last by Dino 24 years, 9 months ago
Yes, I have... As I noted in another thread earlier today, I have an isometric engine that sees the world internally in 3D. The only two places I deal with 2D is when rendering (mapping Isometric 3D space to 2D) and when grapping mouse input (mapping 2D screen coord to 3D space).

I do not use cubes though, I use spheres since they are a lot easier to deal with and requires less space to define.

/NJ

<b>/NJ</b>
Advertisement
hey, dino. glad you could make it to my little forum.

:::bows and waves to the crowd:::

i've been playing with a couple of ideas along the lines of collision detection in iso.

what i've come up with so far has been a combination of anchor points, bounding rectangles, low and high altitude of the object (which makes the bounding rect into a bounding 3d box), and a monochrome bitmap average cross section.

the anchor point is where a perpendicular line from the center point(or other reference point) of the object to the plane of the floor is.

the bounding rectangle is to encompass a shadow of the object in relation to this anchor, as though the object were flattened into the 2d plane of the tiles.

the bounding rectangle should have coordinates that treat the anchor as if it were (0,0), so that determining the world coordinates of the rect is easy.

the shadow(the mono bmp) fits within this bounding rect, and represents the average horizontal (perp to the z axis) cross section of the object. this wont be perfect, but i'm trying to go for simplicity and therefore speed here.

so, to do the actual collision detection, you first compare the lower and upper extents of the objects altitude. if there is an intersection in this range, then an actual collision may have occured(and you can check the shadow to determine the extent of the collision), otherwise, one object may be above another object, and again, you can check the bounding boxes to see how much.

my ideas on this topic, at this time, are still a little confusing, as i havent had time to refine them or test them.

Get off my lawn!

I use a bounding box method myself.
For every frame of animation, I put
a custom sized bounding box around each
sprite, with a width, depth, height
at two points to create 3d coordinates.

When I need to, I can do a quick check
against other sprites, or even against
my heightmapping to see if a collision
occured. It's very fast to check,
just as you would in 2d.

First check in 2d if they collide, then
do that last check if too far above or
below.

------------------
Jim Adams
Co-Designer 'The Light Befallen'
tcm@pobox.com
http://www.lightbefallen.com

I use a bounding box method myself.
For every frame of animation, I put
a custom sized bounding box around each
sprite, with a width, depth, height
at two points to create 3d coordinates.

When I need to, I can do a quick check
against other sprites, or even against
my heightmapping to see if a collision
occured. It's very fast to check,
just as you would in 2d.

First check in 2d if they collide, then
do that last check if too far above or
below.

------------------
Jim Adams
Co-Designer 'The Light Befallen'
tcm@pobox.com
http://www.lightbefallen.com

First off, I would like to give Tanstaafl a round of applause. Please, Tanstaafl, stand up and take a bow...

Now onto the question at hand:
I am working on an isometric engine and was wondering if anyone tried to implement a psuedo-3d collision detection. What I mean is that in isometric games, all objects are 2D. When collision is being calculated, it is usually calculated on a flat 2D plane. For example: If you run into another person, all you normally have to do to move around them is move up 1 pixel and then you will walk behind them. This is an easy way to do collision detection, but it's not realistic enough for me.

What I would like to implement is collision detection based on occupied space. Normal sprites are bounded by a rectangle... I want a 3D cube to bound my sprite but not have a true 3D object. This was a pseudo-3D collision detection can take place.

Has anyone every try this or is this idea way too stupid to even attempt?

Thanks for the feedback.

Dino M. Gambone
Good judgment is gained through experience. Experience, however, is gained through bad judgment.

Currently working on Rise of Praxis MUD: http://www.riseofpraxis.net/

Ok... looks like the bounding cube wins. Thanks everyone.

------------------
Dino M. Gambone
http://www.xyphus.com/users/dino

Good judgement is gained through experience. Experience, however, is gained through bad judgement.


Dino M. Gambone
Good judgment is gained through experience. Experience, however, is gained through bad judgment.

Currently working on Rise of Praxis MUD: http://www.riseofpraxis.net/

This topic is closed to new replies.

Advertisement