extends CharacterBody2D @onready var sprite := $Sprite @onready var nav2d := $NavigationAgent2D const ref_speed := 500.0 @onready var speed := ref_speed @onready var target := position func _physics_process(delta: float) -> void: set_target() navigate(delta) func set_target() -> void: if Input.is_action_just_pressed("set_target"): nav2d.target_position = get_global_mouse_position() if position.distance_to(nav2d.target_position) > 750: speed = ref_speed * 1.8 else: speed = ref_speed func navigate(delta: float) -> void: if nav2d.is_navigation_finished(): sprite.play("stand") return var next_path_position: Vector2 = nav2d.get_next_path_position() velocity = global_position.direction_to(next_path_position) * speed sprite.flip_h = velocity.x > 0 position += velocity * delta if speed > ref_speed: sprite.play("run") else: sprite.play("walk")