In most physics engines, you need three things to happen:
- You need to “bleed” off a small
amount of the linear velocity each
tick - You need to “bleed” off a small
amount of the angular velocity each
tick. - You need to detect when a body
has “slow enough” movement, and
freeze/sleep it
If you forget any one of those bits, it won’t work well. My guess is you’re forgetting 2.