How to keep objects rolling after being pushed?

Godot Version

4.3

Question

Video clip

How would I make it so the ball doesn’t immediately lose all momentum after the object retracts and instead keeps its velocity and kind of gets “launched” forward? I’ve tried a ton of different settings and even things like switching the physics engine and slowing down the collision but nothing seems to work. Would I have to make a script that handles this instead?

How are you launching it currently? Are you using a CharacterBody2D or a AnimatableBody2D?

I’m using a rigid body that tweens its position, and it’s affecting a rigidbody.

Modifying a RigidBody’s position directly will subvert the physics system entirely. You could create an AnimationPlayer for a AnimatableBody2D for a easy to use physics based animation. Or apply forces/impulses to your RigidBody2D.

Wait, sorry. I meant a static body, that tweens the position of a child sprite and a child collision shape. That was affecting the rigidbody (the ball).

Change the pusher’s type to a AnimatableBody2D, it’s a static body that syncs it’s position changes with physics. Tween the AnimatableBody2D itself, not it’s children.

You could try adding a script to the ball, so that the script keeps adding force to it. The script would only do this after the ball gets a collision signal.