diff options
Diffstat (limited to 'scenes/char/weener.gd')
| -rw-r--r-- | scenes/char/weener.gd | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scenes/char/weener.gd b/scenes/char/weener.gd new file mode 100644 index 0000000..f4f9e38 --- /dev/null +++ b/scenes/char/weener.gd @@ -0,0 +1,35 @@ +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") |
