• Advertisement
Sign in to follow this  

Collision Resolving

This topic is 2268 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Silly me posted a topic in graphics programming by accident.
Okay so I'm working on a game in C# XNA and I'm having a hard time wrapping my head around a good collision resolve.

So here is the code I have so far for my AABB's
This will be run after collision has been confirmed

Vector3 Vec1, Vec2; //Intersection of the AABB's
Vector3 VecMin1, VecMax1, VecMin2, VecMax2; // Minimum of Box1, Maximum of Box 1, Minimum of Box 2, Maximum of Box 2 Respectively
bool X, Y, Z; //if X Y or Z are false then they will not be treated as moving
VecMin1 = Min + Position;
VecMax1 = Max + Position;
VecMin2 = Box.Min + Box.Position;
VecMax2 = Box.Max + Box.Position;
X = Y = Z = true;

if (Velocity.X > 0) { Vec1.X = Math.Max(VecMin2.X, VecMin1.X); Vec2.X = VecMax1.X; } else if (Velocity.X < 0) { Vec1.X = Math.Min(VecMax2.X, VecMax1.X); Vec2.X = VecMin1.X; } else { X = false; }
if (Velocity.Y > 0) { Vec1.Y = Math.Max(VecMin2.Y, VecMin1.Y); Vec2.Y = VecMax1.Y; } else if (Velocity.Y < 0) { Vec1.Y = Math.Min(VecMax2.Y, VecMax1.Y); Vec2.Y = VecMin1.Y; } else { Y = false; }
if (Velocity.Z > 0) { Vec1.Z = Math.Max(VecMin2.Z, VecMin1.Z); Vec2.Z = VecMax1.Z; } else if (Velocity.Z < 0) { Vec1.X = Math.Min(VecMax2.Z, VecMax1.Z); Vec2.Z = VecMin1.Z; } else { Z = false; }


My minimum need for collisions as well as the obvious are working slopes and wall sliding.
My intention for collisions are moving platforms, curves, slopes, actual physics like movement (EG moving so fast up a slope result in take off)
I've come up with theories but I can't settle on anything.
The world is made out of blocks 3 x 3 x 3 blocks. some are slope shaped (so their not quite blocks but you get the idea)
I want the resolve to work on a per collision basis. The only way I thought would work, I realized would overkill when colliding with multiple blocks.

Any and all help is appreciated,
Thanks in advanced,
Bombshell

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement