The_Dark_Side_of_Earth/enemies/ghost.gd

27 lines
849 B
GDScript

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