summaryrefslogtreecommitdiff
path: root/scenes/char/weener.gd
diff options
context:
space:
mode:
authorRadio <radiohotline@disroot.org>2026-05-31 00:17:01 +0300
committerRadio <radiohotline@disroot.org>2026-05-31 00:17:01 +0300
commit7f437327b25be23b1cdcd4aa3898d428421e533f (patch)
tree555cece0119bd0673712cd4304a3a28ba0cc3c82 /scenes/char/weener.gd
parent9d87bc7922f76dc835ac4d4e99115b204cbfdea7 (diff)
menu fixes, options menu, and movement mechanic
Diffstat (limited to 'scenes/char/weener.gd')
-rw-r--r--scenes/char/weener.gd35
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")