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

## 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:

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

##### Share on other sites

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

• ### What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

(You must login to your GameDev.net account.)

• 17
• 14
• 10
• 9
• 11
• ### Forum Statistics

• Total Topics
634097
• Total Posts
3015505
×