Files
Defensaria/Game/Mobs/enemy.gd
2025-03-10 12:40:45 +01:00

68 lines
1.5 KiB
GDScript

extends Node2D
var speed = 0
var health = 0
var shield = 0
var current_health = 0
var current_shield = 0
var last_position: Vector2 = Vector2.ZERO # To store the previous position
func _ready() -> void:
last_position = get_parent().position
set_character_data()
adjust_health_bar()
func _process(delta: float) -> void:
move_character(delta)
func move_character(delta: float) -> void:
var path_follow = get_parent()
# Update the progress and prevent rotation
path_follow.set_progress(path_follow.get_progress() + speed * delta)
path_follow.rotation = 0
#turn the character to to the way its headed
var current_position = path_follow.position
if current_position.x < last_position.x:
path_follow.scale.x = -abs(path_follow.scale.x)
else:
path_follow.scale.x = abs(path_follow.scale.x)
# Update the last_position for the next frame
last_position = current_position
#if reached the end of the path remove both the path, and the character
if path_follow.get_progress_ratio() >= 0.999:
get_parent().queue_free()
func set_character_data():
match self.name:
"Forkman":
speed = 120
health = 100
shield = 100
"Ork":
speed = 80
health = 150
shield = 100
"Cobold":
speed = 200
health = 50
shield = 0
get_node("CharacterBody2D/AnimatedSprite2D").speed_scale = float(speed) / 100 #adjust animation speed based on the character speed
current_health = health
current_shield = shield
func adjust_health_bar() -> void:
var health_bar = get_node("ProgressBar")
health_bar.value = health / current_health * 100
pass