summaryrefslogtreecommitdiff
path: root/player.gd
diff options
context:
space:
mode:
Diffstat (limited to 'player.gd')
-rw-r--r--player.gd38
1 files changed, 35 insertions, 3 deletions
diff --git a/player.gd b/player.gd
index 9743b4c..fdf8db8 100644
--- a/player.gd
+++ b/player.gd
@@ -1,9 +1,13 @@
extends Area2D
@export var speed := 2.0
+@export var projectile_speed := 3.0
+@export var visibility := 320.0
+@export var arrow: PackedScene
@onready var primogemmes = get_node("../CanvasUI/UI/Primogemmes")
@onready var sfxs = [ $SfxOO, $SfxEE, $SfxOO2 ]
-@onready var sfx = 0
+var sfx = 0
+var aiming: Area2D = null
func type() -> String: return "player"
@@ -26,14 +30,20 @@ func get_input() -> Vector2:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(_delta2: float) -> void:
- position += get_local_mouse_position().normalized() * speed
+ var mouse := get_local_mouse_position().normalized()
+ position += mouse * speed
position = position.clamp(Globals.LIMITS_MIN, Globals.LIMITS_MAX)
#var color := Color()
#color.r = randi() % 2
#color.g = randi() % 2
#color.b = randi() % 2
#material.set_shader_parameter("color", color)
-
+ var enemy = find_enemy()
+ aiming = null
+ if enemy != null:
+ var dist := absf((position - enemy.position).length())
+ if dist < visibility:
+ aiming = enemy
func _on_area_entered(area: Area2D) -> void:
@@ -52,3 +62,25 @@ func select_character(s: String) -> void:
$Sprite2D.frame = 0
"luigi":
$Sprite2D.frame = 1
+
+
+func find_enemy() -> Area2D:
+ var closest: Area2D = null
+ var closest_dist: float = 10000000000000.0
+ for e in get_node("..").get_children():
+ if e.has_method("type") and e.type() == "dicaprio":
+ var dist := absf((position - e.position).length())
+ if dist < closest_dist:
+ closest_dist = dist
+ closest = e
+ return closest
+
+
+func _on_timer_timeout() -> void:
+ if aiming == null: return
+ var e: Area2D = arrow.instantiate()
+ e.position = position
+ var norm := (aiming.position - position).normalized()
+ e.rotation = norm.angle()
+ e.velocity = norm * projectile_speed
+ get_node("..").add_child(e)