Jump to content
  • Advertisement
Sign in to follow this  
mypel16000

Clashing Enemies

This topic is 1971 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

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

Share this post


Link to post
Share on other sites
Advertisement
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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".

Share this post


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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!