Godot Version
v4.4.1
Question
I am dropping a cuboid object with some horizontal momentum. For some reason objects land upright without tumbling. I tried with a capsule and it indeed tipped to the side if dropped with horizontal momentum, so I suspect something is wrong with friction values.
Seems like your rigidbodies have a very strange origin point. can you show the 3D scene for these pills?
I played with the center of mass, maybe that’s why. It didn’t help with the lack of tumbling though.
Box collision shape for reference
What was it like before? Boxes will have a very hard tumbling in general, but I was noticing weeble-wobble like behaviour in the first video, a bomb laying flat lifted itself back up seemingly without influence.
How are you spawning these? Anything strange about applying the initial velocity?
Yes, with some velocity
func drop_bomb():
if !bomb_scene or !can_drop: return
var bomb_instance: RigidBody3D = bomb_scene.instantiate()
get_parent().add_child(bomb_instance)
bomb_instance.global_transform.origin = $DropPoint.global_transform.origin
# Apply inherited movement
bomb_instance.apply_impulse(velocity + Vector3(0, -5, 0))
# Apply inherited rotation
bomb_instance.apply_torque(Vector3.UP * angular_velocity.y)
can_drop = false
$DropCooldownTimer.start()
That might be it, try changing the position instead of the origin, and earlier.
func drop_bomb():
if !bomb_scene or !can_drop: return
var bomb_instance: RigidBody3D = bomb_scene.instantiate()
bomb_instance.position = $DropPoint.global_position
add_sibling(bomb_instance)
That didn’t affect the drop physics. But with more testing I figured that increasing horizontal speed produced tumbling 
Also adding some small random force on drop helped too.
Now it’s more of a question of how to configure godot 3d physics to look realistic, seems like falling completely flat kills too much momentum
Nice, maybe you need to add some bounce to your physics material, I find even 0.1 adds a good effect. Also have you tried the Jolt physics backend? Might be worth to set that up now rather than later.
I thought Jolt is the new default. Tried it now and the behavior is really different, seems like there is a lot of dampening on the initial impulse. To get similar horizonal momentum as in godot default physics I had to multiply velocity by 5.
bomb_instance.apply_impulse(velocity * 5 + Vector3(0, -5, 0))
edit: instead of applying impulse, setting velocity to parent’s value fixed initial speed
bomb_instance.linear_velocity = velocity