Godot Version
4.5.1.stable
Question
Hi everyone, I’ve been struggling with an Area3D that refuses to detect my RigidBody3D player, even though another Area3D in the same project (a checkpoint) detects it perfectly.
I’m making a 3D marble-style movement system where the player is a RigidBody3D rolling on the ground. I’m trying to create a Jump Pad using an Area3D, but the signal never detects.
Here are all the details.
player node setup:
The Marble has:
collision_layer = 2
It interacts correctly with my Checkpoint Area3D, so I know the layer/mask setup does work.
THE CHECKPOINT AREA (this one does detect the player)
My Checkpoint scene is an Area3D with:
collision_mask = 2
and its detection uses:
func _on_area_3d_body_entered(body: Node3D) -> void:
if body.owner.is_in_group("player"):
# Works correctly
This signal fires every time.
THE JUMP PAD AREA (this one does NOT detect the player)
Node Setup:
Script:
extends Area3D
@export var jump_force: float = 20.0
func _on_body_entered(body: Node3D) -> void:
print("DETECTED:", body) # Never prints
if body.owner.is_in_group("player"):
print("ACTIVATED!")
The signal is connected like this:
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
Despite this, the function never runs.
MY QUESTION
What are the possible reasons an Area3D with the correct layer/mask, monitoring enabled, and a working signal connection would still completely fail to detect a RigidBody3D, while another Area3D with identical settings detects it perfectly?
Any insight or debugging advice would be greatly appreciated, as I’ve spent hours trying every known fix.
Thanks!



