extends MeshInstance3D signal speed_changed(new_speed: float) @export_group("Train") @export var base_speed: float = 15.0 @export var max_speed: float = 50.0 @export var min_speed: float = 3.0 @export var acceleration: float = 12.0 var current_speed: float = 15.0 func _ready() -> void: current_speed = base_speed func _process(delta: float) -> void: _handle_input(delta) func _handle_input(delta: float) -> void: if Input.is_action_pressed("speed_up"): current_speed = min(current_speed + acceleration * delta, max_speed) speed_changed.emit(current_speed) elif Input.is_action_pressed("speed_down"): current_speed = max(current_speed - acceleration * delta, min_speed) speed_changed.emit(current_speed) func get_speed() -> float: return current_speed