For making it simple as I can the layers and mask are 1, which obviously then I will change but I just can’t find culprit why RigidBody3D just doesn’t fall down.
Minimal project can be found here
code responsible for changing collision mask is located in rigidbody3d( hole), this using stencil buffer to create the empty space where Ball should fall( currently even through floor when hole overlap it with Area3D. )
func _on_activator_body_entered(body: Node3D) -> void:
if body.is_in_group("fallable"):
body.set_collision_mask_value(1, false)
print("found body")
func _on_activator_body_exited(body: Node3D) -> void:
if body.is_in_group("fallable"):
body.set_collision_mask_value(1, true)
It looks like they travel past the “Activator” and thus collision is re-enabled, I assume one of your barrier shapes is a world boundary so the ball is pushed back up.
If you used text .tscn scene files that would help a lot more with quickly exploring such issues without downloading the project.
WorldBoundary is good, it’s for accurate, fast, infinite planes of collision- probably the best option for this game’s floor, but you need to extend the “Activator” further down and delete the balls once they are at the bottom.
You don’t extend the world boundry, it’s already infinite- you can only change which direction it’s facing, but up is correct. I see the problem as the balls are not deleted once they fall out of sight, the hole needs to delete objects after swallowing them