diff options
| author | Radio <radiohotline@disroot.org> | 2026-05-31 00:17:01 +0300 |
|---|---|---|
| committer | Radio <radiohotline@disroot.org> | 2026-05-31 00:17:01 +0300 |
| commit | 7f437327b25be23b1cdcd4aa3898d428421e533f (patch) | |
| tree | 555cece0119bd0673712cd4304a3a28ba0cc3c82 /scenes/char/weener.gd | |
| parent | 9d87bc7922f76dc835ac4d4e99115b204cbfdea7 (diff) | |
menu fixes, options menu, and movement mechanic
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") |
