• FEATURED

View more

View more

View more

Image of the Day Submit

IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Clashing Enemies

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

5 replies to this topic

#1mypel16000  Members

Posted 24 January 2013 - 02:10 PM

Hi, many of you might have been following the process of my game, and I have got very very far. I encounter a problem though. I have multiple enemies that chase the player around the screen. (2D seen from above). A big problem that I have encountered is that as you walk past them in circles, they all start coming together, and as there is no collision, they all group onto the same point and are seen as one, they all get to the same X and Y if you don't get me. Now, I can perfectly check collision, either pixel circle, bounding box or polygonal, but i don't know what to do if the collision returns true... do I make it go upwards, downwards..... Is there a way to simple revert the movement of the last frame?

P.S: SFML

#2FLeBlanc  Members

Posted 24 January 2013 - 02:18 PM

If you are not simulating rigid physics, then you can simply calculate a new position for an object, test to see if there will be a collision at that spot, and don't move it or move it in a different direction if there is a collision. No need to undo a step if you just never make the step in the first place.

If you are simulating rigid physics, then collision resolution is typically handled by applying incremental forces lateral to a separation axis, to iteratively push the entities apart. This correction is applied separately from any other physical forces (rebounding, etc...) that might be applied as part of the collision.

#3swiftcoder  Senior Moderators

Posted 24 January 2013 - 02:26 PM

One simple solution to this is to use the requisite steering behavior - most of this sort of simple AI/pathing task is simply expressed as some combination of basic steering behaviours.

Tristam MacDonald - Software Engineer @ Amazon - [swiftcoding] [GitHub]

#4BeerNutts  Members

Posted 25 January 2013 - 01:56 PM

My typical responses for this is to look at adding a 2d physic engine. It handles all these issues for you and they are incredibly easy to add to a game. I like chipmunk-physics, bur others like box2d.
My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

#5willpowered  Members

Posted 26 January 2013 - 10:28 AM

Circle vs circle collision resolution is easy. If you know two circles intersect, you can resolve based on the difference of their radii. Resolution direction is simply the vector from the center of one circle to the other.

That should be enough to get you started!

#6Trienco  Members

Posted 27 January 2013 - 12:56 AM

I'd very much go with the AI approach, because trying to solve this with physics in a tight crowd sounds like an awful mess. Yes, it's trivial to have _two_ objects and resolve their collision by moving one to the side. Except that in a crowd it might then hit someone else and you end up with a recursion that takes forever to resolve. The only solution would then be "if your movement would cause a collision, don't try to move at all".

f@dzhttp://festini.device-zero.de

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.