28 lines
617 B
GDScript3
28 lines
617 B
GDScript3
|
extends Node
|
||
|
class_name Health
|
||
|
|
||
|
signal health_depleted
|
||
|
signal health_changed(health)
|
||
|
|
||
|
@export var damage_particle_scene : PackedScene
|
||
|
|
||
|
@export var max_health := 10
|
||
|
var current_health
|
||
|
|
||
|
func take_damage(damage):
|
||
|
var marker = damage_particle_scene.instantiate()
|
||
|
get_tree().root.add_child(marker)
|
||
|
marker.set_number(damage)
|
||
|
marker.position = get_parent().global_position + Vector3.UP
|
||
|
|
||
|
current_health -= damage
|
||
|
health_changed.emit(current_health)
|
||
|
if current_health <= 0:
|
||
|
health_depleted.emit()
|
||
|
|
||
|
|
||
|
func heal_damage(healing):
|
||
|
current_health += healing
|
||
|
if current_health > max_health:
|
||
|
current_health = max_health
|