Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I prevent a ball from sticking to walls in Box2D?

I'm experimenting with box2d. I seem to have a problem people describe as sticky walls

I have a ball and a paddle

I'm using all the basic recommended scales I could find, 10m world, 1m ball

The ball has the following properties:

shape: circle (.5f radius)
size: 1.0f
density: 1.0f
restitution: 1.0f
friction: 0.0f

The paddle used to move the ball is 1.5m, it has the following properties: shape:

circle (.75f radius)
size: 1.5f
density: 10.0f
restitution: 0.1f
friction: 0.0f

As you see the friction is 0 for all objects.

The ball constantly gets stuck rolling along a wall or completely jammed in the 90 degree corners

I was thinking I could detect a collision with a wall and trigger an applyLinearImpulse to move the ball off the wall.

like image 393
Rob Avatar asked Mar 21 '11 17:03

Rob


1 Answers

You need to reduce the minimum velocity threshold for elastic collisions.

Do this by reducing b2Settings::b2_velocityThreshold closer to 0.

like image 50
Martin Avatar answered Nov 14 '22 12:11

Martin