extends Area2D @onready var earth_aligner = $EarthAligner var speed = 100 var damage = 1 var player : CharacterBody2D var current_knockback = Vector2.ZERO var knockback_weight = 800 func _ready(): 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)) 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() func _on_damage_taken(_damage : int, dir: Vector2): current_knockback = dir * knockback_weight