class_name StateMachine extends Node signal cambioEstado(nombre_estado) @export var estado_inicial := NodePath() @onready var state : State = get_node(estado_inicial) func _ready(): await (owner.ready) for child in get_children(): child.state_machine = self state.state_enter_state() func _unhandled_input(event): state.state_input(event) func _process(delta): state.state_process(delta) func _physics_process(delta): state.state_physics_process(delta) func transition_to(target_state : String, msg : Dictionary = {}): if not has_node(target_state): return state.state_exit() state = get_node(target_state) state.state_enter_state(msg) emit_signal("cambioEstado", state.name)