Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


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.

  • You cannot reply to this topic
5 replies to this topic

#1 mypel16000   Members   -  Reputation: 46

Like
0Likes
Like

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



Sponsor:

#2 FLeBlanc   Crossbones+   -  Reputation: 3117

Like
0Likes
Like

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.

#3 swiftcoder   Senior Moderators   -  Reputation: 10361

Like
2Likes
Like

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]


#4 BeerNutts   Crossbones+   -  Reputation: 2998

Like
0Likes
Like

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)

#5 willpowered   Members   -  Reputation: 515

Like
0Likes
Like

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!



#6 Trienco   Crossbones+   -  Reputation: 2223

Like
1Likes
Like

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.



PARTNERS