This repository has been archived on 2025-09-12. You can view files and clone it, but cannot push or open issues or pull requests.
ld48/character/Enemy.gd
2021-04-25 23:38:11 +02:00

51 lines
1.3 KiB
GDScript

extends KinematicBody2D
var health = 100.0
var attack_range: float = 30.0
var basic_attack_dmg: float = 2.00
var basic_attack_multiplier: float = 3.00
var basic_attack_cooldown: float = 5.00
var attack_timer: float = 0.00
var run_speed: float = 50.0
var nearest_player = null
onready var home = self.position
func take_damage(dmg: float):
health -= dmg
if health <= 0.0:
queue_free()
func set_target(player: KinematicBody2D):
nearest_player = player
func _physics_process(delta:float):
if nearest_player:
attack_timer += delta
var towardsplayer = ((nearest_player.global_position - self.global_position).normalized() * self.run_speed)
move_and_slide(towardsplayer)
var collision = move_and_collide((nearest_player.global_position - self.global_position).normalized() * self.attack_range,true,true,true)
if collision && collision.collider.has_method("take_damage") && attack_timer >= basic_attack_cooldown :
collision.collider.take_damage(basic_attack_dmg * basic_attack_multiplier)
attack_timer = 0.00
else:
var towardshome = ((home - self.position).normalized() * self.run_speed)
move_and_slide(towardshome)
func _process(delta:float):
if nearest_player:
DebugLabel.display(self, nearest_player.position)
DebugLabel.display(self, ((nearest_player.position - self.position).normalized() * self.run_speed))
else:
pass