Godot Version
4.3.stable
Question
How do I make a “on_…_area_entered” function get called immediately when starting my scene? I need to detect collisions of 2 child Node3D scenes as soon as the scene starts, not 1, 2, 3, 4, etc frames after. I have logic depending if the 2 scene’s areas are touching each other. Is there a faster way to detect collisions of an area?
the children scenes code:
extends Node3D
#list that pools all pivot nodes in scene
@export var pivot_pool : Array[Pivot]
#list of pivot nodes to add to pivot pool
var pivots_to_pool : Pivot
var is_room_intersecting : bool = false
#--------------------------------------------------------------------
@onready var occupying_space: Area3D = $OccupyingSpace
#--------------------------------------------------------------------
func _ready():
_create_timer_for_pivot_intersecting()
check_if_room_intersecting(is_room_intersecting)
func _on_occupying_space_area_entered(occupying_space: Area3D) → void:
is_room_intersecting = true
print(“room entered area room”)
func _on_occupying_space_area_exited(occupying_space: Area3D) → void:
is_room_intersecting = false
print(“room exited area room”)
func check_if_room_intersecting(bool):
if is_room_intersecting == true:
print(“rooms are intersecting”)
return true
if is_room_intersecting == false:
print(“rooms are not intersecting”)
return false
func _create_timer_for_pivot_intersecting():
await get_tree().create_timer(.01).timeout
the main scene code:
extends Node3D
var picked_scene : Node3D
var can_spawn_room : bool = true
@onready var lvl_gen = $“.”
func _ready():
doesnt_matter()
check_if_room_intersecting(can_spawn_room)
if can_spawn_room == false:
print(“willnotwork”)
elif can_spawn_room == true:
print(“willwork”)
func doesnt_matter():
for child in lvl_gen.get_children():
picked_scene = child
func check_if_room_intersecting(bool):
_create_timer_for_pivot_intersecting()
if picked_scene.check_if_room_intersecting(true):
return false
elif picked_scene.check_if_room_intersecting(false):
return true
func _create_timer_for_pivot_intersecting():
await get_tree().create_timer(.01).timeout