diff --git a/enemies/ghost.gd b/enemies/ghost.gd index 37a6de7..6ae5899 100644 --- a/enemies/ghost.gd +++ b/enemies/ghost.gd @@ -3,23 +3,32 @@ extends Area2D var speed = 100 var damage = 1 var player : CharacterBody2D +var target : CharacterBody2D var current_knockback = Vector2.ZERO var knockback_weight = 800 -func _ready(): +var aggro_range = 900 +var chase_range = 1400 + +func _ready() -> void: player = get_tree().get_root().get_node("main/Player") func _physics_process(delta: float) -> void: - var motion = -(position - player.position).normalized() * speed var dist = (position - player.position).length() - self.position += motion * delta * min(1, dist/(motion.length()*delta)) - + if(dist > chase_range): + target = null + elif(target == null and dist <= aggro_range): + target = player + if(target!=null): + var motion = -(position - target.position).normalized() * speed + self.position += motion * delta * min(1, dist/(motion.length()*delta)) + self.position += earth_aligner.global_from_local(current_knockback) * delta current_knockback = current_knockback/pow(1.3, 60*delta) - + if(self.overlaps_body(player)): player.hurt(damage, self.position-player.position) - + func _on_death(): self.queue_free()