You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
879 B
27 lines
879 B
extends Area3D |
|
class_name HurtBox |
|
|
|
## A component that receives damage from HitBoxes |
|
## Attach to any entity that can be damaged (players, enemies, destructibles) |
|
## NOTE: This is a passive detection zone - HitBox handles the collision detection |
|
|
|
## The entity that owns this hurtbox (should be a BaseUnit or similar) |
|
@export var owner_entity: Node = null |
|
|
|
func _ready(): |
|
# Auto-find owner if not set (traverse up to find BaseUnit) |
|
if owner_entity == null: |
|
var parent = get_parent() |
|
while parent: |
|
if parent is BaseUnit: |
|
owner_entity = parent |
|
break |
|
parent = parent.get_parent() |
|
|
|
# Configure collision - hurtboxes are on layer 5, detect nothing (passive) |
|
collision_layer = 16 # Layer 5 (hurtbox) |
|
collision_mask = 0 # Don't detect anything - hitboxes detect us |
|
|
|
# Ensure we can be detected but don't detect others |
|
monitorable = true |
|
monitoring = false
|
|
|