Error: Condition "!is_inside_tree()" is true. Returning: Transform3D() )

Godot Version

Replace this line with your Godot version

Question

I put in this code:

if position.y < -15:
		get_tree().reload_current_scene()

At the end of my character movement script (inside the physics process function) to make my player “die” when they fall off the world, but as soon as the character falls off I get the errors below- does anyone know what’s going on here?

For reference just in case here’s the full movement code but it’s just the standard stuff Godot gives you when you open a new character body script as I’m just testing out other aspects of the game at the moment:

func _physics_process(delta: float) -> void:
	# Add the gravity.
	if not is_on_floor():
		velocity += get_gravity() * delta

	# Handle jump.
	if Input.is_action_just_pressed("ui_accept") and is_on_floor():
		velocity.y = JUMP_VELOCITY

	# Get the input direction and handle the movement/deceleration.
	var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
	var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
	if direction:
		velocity.x = direction.x * SPEED
		velocity.z = direction.z * SPEED
	else:
		velocity.x = move_toward(velocity.x, 0, SPEED)
		velocity.z = move_toward(velocity.z, 0, SPEED)

	if position.y < -15:
		get_tree().reload_current_scene()

	move_and_slide()

move_and_slide() is trying to run after (kind of during) reload_current_scene, but the character body has been deleted (or queued for deletion) so it cannot move_and_slide().

You can put return after reload_current_scene() to stop the function from continuing

if position.y < -15:
	get_tree().reload_current_scene()
	return
1 Like

Thank you!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.