I made a post awhile back but I feel for the topic I overcomplicated my setup way too much for what I was trying to study. I'm attempting to get more into the physics side of Godot now, one of the main things I haven't been able to figure out is IsSleeping and there's surprisingly little in the way of information on this RigidBody setting. If I'm understanding this correctly, by all accounts if IsSleeping is on the rigidbody itself should stay in it's original position and not move at all, yet despite what I think should be the correct settings it is not. Which is annoying because for a lot of what I want to do with RigidBodies this IsSleeping boolean is perfect.

I've made things extra basic this time around and just placed a simple cube rigidbody in the scene, checked IsSleeping, the rigidbody falls and acts like a normal rigidbody for some reason. Turning off gravity scale does technically 'solve' this issue but of course it's not really a solution because all you're doing is making the thing float in the air and it's still technically a normal rigidbody rather than one that's sleeping.

Here's my setup so far, nothing fancy, Rigidbody, Mesh, CollisionShape.

Tried enabling it in script in the _ready function but that doesn't seem to have done the trick either, very curious.

Bumping because I feel there isn't that much info about Sleeping, would be nice to know more about it and if I'm doing something really wrong with the setup.

The description of the RigidBody3D sleep property is:

If true, the body will not move and will not calculate forces until woken up by another body through, for example, a collision, or by using the apply_impulse or apply_force methods.

It doesn't say anything about gravity. There's another property, freeze, with description:

If true, the body is frozen. Gravity and forces are not applied anymore.

You may want to use freeze instead of, or in addition to, sleep.

If you use freeze, note that there's a freeze_mode property that affects its behavior.

Edit: Nope! Back to the drawing board, almost thought I had it but will test methods.

Yeah I'm kind of getting the idea thanks to your explanation but the big problem is with freeze the rigidbodies won't pass through cleanly and I thought I managed to tweak it to do that correctly but no, freeze is too 'solid', stops the rigidbody passing through it dead.

Okay! I actually did it, I feel like this is extremely hacky but it works, is there a better way of keeping the Rigidbody static while allowing other Rigidbodies to pass through it cleanly? Because freeze didn't work for me and sleeping of course still affects the Rigidbody gravity, the physics is working perfectly now. Enable all of the axis lock for the rigidbody and that should work fine will need to test this thoroughly 😃

extends RigidBody3D

@onready var collisionShape = $CollisionShape3D


func _on_body_entered(body):
	if body.is_in_group("FrozenRB"):
		body.axis_lock_linear_x = false
		body.axis_lock_linear_y = false
		body.axis_lock_linear_z = false
		
		body.axis_lock_angular_x = false
		body.axis_lock_angular_x = false
		body.axis_lock_angular_y = false