Take the 2-minute tour ×

I'm using box2d for physics simulation. I'm moving a circle using arrow keys by applying impulse on the body when ever a key is pressed. Unfortunately, the circle moves excruciatingly slow and doesn't seem to accelerate like a true physical body is supposed to. My world's dimensions are 400x800 pixels. The radius of the circle body is 20f.

According to this, the problem can be solved by scaling the circle radius down when creating it and scaling up after getting the body position during painting. It doesn't seem to make any difference at all. Is there some step or setting I'm missing here ?

Code on pastebin

share|improve this question
Could you share the relevant code? E.g. construction of the body etc. –  Tom Feb 8 '13 at 14:04
@Tom Added link for code on pastebin. I'm using box2d with libgdx game engine - so the code is in Java. –  ivymike Feb 8 '13 at 14:14
Are you actually applying the impulse on the circle somewhere? ApplyLinearImpulse –  Tom Feb 8 '13 at 14:23
@Tom Yes. I'm doing that right after determining the impulse (updated the code to reflect that) : fixture.getBody().applyLinearImpulse(impulse, fixture.getBody().getWorldCenter()); –  ivymike Feb 8 '13 at 15:18
Aside from the density being fairly high, I can't see anything out of the ordinary with what you've pasted. What kind of debugging have you done? Have you tried hard-coding an impulse to apply, rather than relying on key-press etc? –  Tom Feb 8 '13 at 15:37
show 1 more comment

2 Answers

Yes, there is a difference between which size do you use. Box2d operates over floating point numbers and thus it's precision is limited and simulation quality differs. Box2d is tuned to work best with dynamic bodies of size 0.1 to 10.

So generally you should prefer to use one units for physics and other for graphics

Now to your question. Body's velocity is affected by collisions, friction (if one body is sliding over the other) and by linear damping. So check what value for linear damping do you use (it's non-zero by default as I remember). There are no velocity limitations, as far as I know, but higher velocity will provide less quality collisions if using the same time step.

share|improve this answer
Unfortunately setting linear damping to zero didn't help either :( –  ivymike Feb 8 '13 at 15:49
add comment

It took me pretty long to understand that now, but there actually really IS a hard limit on velocity in Box2D. See here:

There is a maximum movement limit of 2.0 units per time step, given in the file b2Settings.h in the source code.

Maybe this will save somebody a bit of time one day.

share|improve this answer
add comment

Your Answer


