extends Area3D class_name Hitbox @export var debug_color_hit: Color = Color(Color.YELLOW, 0.5) @export var debug_color_standby: Color = Color(Color.GREEN, 0.5) @onready var shape: CollisionShape3D = $CollisionShape3D @onready var hit_effect: HitEffect = $HitEffect var _last_hit: float = 0 func _ready() -> void: shape.debug_color = debug_color_standby func _process(delta: float) -> void: if monitoring: for area in get_overlapping_areas(): if area is Hurtbox: on_hit(area) _last_hit += delta if _last_hit > 1.0: shape.debug_color = debug_color_standby func on_hit(area: Hurtbox): if is_being_attacked_by(area): _last_hit = 0 shape.debug_color = debug_color_hit hit_effect.trigger() area.ignore_list.append(self) on_successful_hit(area) func is_being_attacked_by(area: Hurtbox): return area.is_attacking and not area.ignore_list.has(self) ## To be overridden by a child class func on_successful_hit(_area: Hurtbox): pass