How to make physical objects enter "sleep" status more quickly after collision or applyForce()?

Hello,

I want to ask a question about physics.

After object:applyForce() or  object:applyLinearImpulse(), physical objects tend to keeping moving for a long while even if their friction is 1.0.

Especially they keep moving at low speed for a long time if they are circular.

This acts like how physics works in real world.

But in a game, this makes the progress too slow.

I want to make the progress quicker, how do I accomplish this and keep them act smoothly?

Thanks for reading.

friction isn’t what you want - that does something else.

use linearDamping to decay velocity as if drag were occurring. (box2d does not  model drag)

hth

Thanks for reply.

So how do I use linearDamping to make object stop rolling with low speed?

And what does friction do exactly?

thing.linearDamping = 0.7 – just some value > 0, whatever feels right

friction imparts/transfers angular momentum during contact, it’s like how “grippy” things are when touching.  fe: bowling ball on a waxed lane = low friction, may backspin/sidespin as travels; billiard ball across felt = high friction, rolls “with” as travels.

Thanks for reply.

What does linearDamping do exactly?

It’s like a factor that decays object’s velocity over time?

One more question, what’s the difference between applyForce and applyLinearImpulse?

Document says “an impulse is a single momentary jolt”.

But I noticed that obj:applyForce(100, 100) and obj:applyLinearImpulse(100, 100) apply different amount of force.

They have significant different speed when applied.

In my case, applyLinearImpulse make object moves A LOT faster than applyForce.

line 216:  https://github.com/erincatto/Box2D/blob/master/Box2D/Box2D/Dynamics/b2Island.cpp

an impulse acts right now, like kicking a soccer ball (idealized).  a force acts over time, like gravity (F=ma).

[edit:  billiard cue versus ball better example of impulse - less deformable]

Thanks!

I will mark this thread solved.

friction isn’t what you want - that does something else.

use linearDamping to decay velocity as if drag were occurring. (box2d does not  model drag)

hth

Thanks for reply.

So how do I use linearDamping to make object stop rolling with low speed?

And what does friction do exactly?

thing.linearDamping = 0.7 – just some value > 0, whatever feels right

friction imparts/transfers angular momentum during contact, it’s like how “grippy” things are when touching.  fe: bowling ball on a waxed lane = low friction, may backspin/sidespin as travels; billiard ball across felt = high friction, rolls “with” as travels.

Thanks for reply.

What does linearDamping do exactly?

It’s like a factor that decays object’s velocity over time?

One more question, what’s the difference between applyForce and applyLinearImpulse?

Document says “an impulse is a single momentary jolt”.

But I noticed that obj:applyForce(100, 100) and obj:applyLinearImpulse(100, 100) apply different amount of force.

They have significant different speed when applied.

In my case, applyLinearImpulse make object moves A LOT faster than applyForce.

line 216:  https://github.com/erincatto/Box2D/blob/master/Box2D/Box2D/Dynamics/b2Island.cpp

an impulse acts right now, like kicking a soccer ball (idealized).  a force acts over time, like gravity (F=ma).

[edit:  billiard cue versus ball better example of impulse - less deformable]

Thanks!

I will mark this thread solved.