netmasked/scripts/hitbox.gd

30 lines
646 B
GDScript

class_name Hitbox extends Area2D
signal collided;
var from_player = true
var enabled = true
func _ready() -> void:
collision_mask = 0xffff
body_entered.connect(_on_body_entered)
area_entered.connect(_on_area_entered)
func _on_area_entered(area : Area2D):
if area is Hitbox:
if area.from_player != from_player:
collided.emit()
func _on_body_entered(body: Node) -> void:
print(body)
if not enabled: return
if body is Enemy and from_player:
body.damage()
collided.emit()
body.knockback()
if body is Player and not from_player:
body.damage()
collided.emit()
if body is StaticBody2D or body is Hitbox:
collided.emit()