diff --git a/enemies/boss/blob.gd b/enemies/boss/blob.gd index 5e8fe50..ae2f87d 100644 --- a/enemies/boss/blob.gd +++ b/enemies/boss/blob.gd @@ -1,26 +1,35 @@ extends Node2D - var moving = false @onready var player = get_tree().get_root().get_node("main/Player") -@onready var target = player.position var speed = 500 +# The target is set on initialization and never updated. +@onready var target = player.position + var reached = false signal target_reached func _ready() -> void: + + # Wait one second before firing await get_tree().create_timer(1).timeout moving = true func _process(delta: float) -> void: + + # Fire towards the center of the cross if moving: position += (target - global_position).normalized().rotated(-get_parent().rotation) * speed * delta + + # When reaching the center, inform parent node if((global_position - target).length() < 40): moving = false if not reached: target_reached.emit() reached = true + + # Damage the player on contact if has_node("Area2D") and $Area2D.overlaps_body(player): player.hurt(1, global_position-player.position)