SchildDerStaerke/scripts/hurtbox.gd

32 lines
739 B
GDScript

class_name HurtBox extends Area3D
var can_take_damage: bool = true
var cooldown_time: float = 1.0 # Cooldown duration in seconds
func _init() -> void:
collision_layer = 0
collision_mask = 2
func _ready() -> void:
connect("area_entered", Callable(self, "_on_area_entered"))
func _on_area_entered(hitbox) -> void:
if not hitbox is HitBox:
print("Unexpected type:", hitbox)
return
if hitbox == null or hitbox.owner == owner:
return
if owner.has_method("take_damage"):
owner.call("take_damage", hitbox.get_damage())
start_cooldown()
func start_cooldown() -> void:
can_take_damage = false
await get_tree().create_timer(cooldown_time).timeout
can_take_damage = true
# set_deferred("monitor", false)
# queue_free()