Advertisement Jump to content
Sign in to follow this  
Nickie

Custom Physics: Preventing objects from losing velocity in certain situation

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

Illustration: http://s22.postimg.org/7agd30vap/Untitled.png

So the little box is my character. The red arrow shows the current velocity(Some force to right + gravity). Below it are 2 blocks which has the same height. The problem is that my algorithm would solve the collision normals with error.(You can see them in green). These would mean that my character would not slide, but will stop in one place.  In this place both collision normals should have been UP(0,1).

 

Implementation details:

I'm following this tutorial: http://gamedevelopment.tutsplus.com/tutorials/how-to-create-a-custom-2d-physics-engine-the-basics-and-impulse-resolution--gamedev-6331

 

 

Is there something I miss and how can I fix this problem?

 

Share this post


Link to post
Share on other sites
Advertisement

I took a brief look at the tutorial. The problem you're having appears to be a limitation of the very simple collision detection method described in that article. Assuming you're using AABB collisions, the method results in just what you're seeing. It's likely you are implementing it correctly.

 

Unfortunately, there isn't a simple fix for that simplified collision detection system. You can try other collision/physics engines like Bullet or ODE. Those are 3D systems which may be overkill for your purposes. Perhaps others know of a 2D engine you could use.

 

If you're just trying to write your own engine for the experience, you could add a routine that extends AABBs when more than 1 collision is detected. In your example, that would result in combining the AABBs for the two adjacent boxes, and should result in just a vertical normal for the collision.

Edited by Buckeye

Share this post


Link to post
Share on other sites

This is a difficult problem that shows up in even very experienced programmer's simulation for large companies. Very old-style games would use tile arrays, which don't have this problem due to the quantization of an array.

 

It is much easier to avoid the problem altogether. You can try to manage your levels by-hand to make sure that there is no geometry that has adjacent rectangles that the player can snag onto. You could also use a different shape for the player, perhaps a sphere or a shape similar to this: http://i.imgur.com/P7NNc9T.png

Share this post


Link to post
Share on other sites

Thank you for your replies-oppinions.

 

What I'm going to do is to prioritize the collision response of the objects that have largest area overlapped. This is most likely to solve the other problem(I hope).

 

P.S Randy nice tutorial you have written. It was really easy to follow and everything took place in my head. Good job.

 

MARKING THIS AS SOLVED.

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.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!