Peashooters
This commit is contained in:
parent
161f87da75
commit
68cfe89f1d
47 changed files with 1571 additions and 279 deletions
45
scripts/components/generic_hurtbox.gd
Normal file
45
scripts/components/generic_hurtbox.gd
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
extends Area2D
|
||||
|
||||
class_name GenericHurtbox
|
||||
|
||||
@export_flags("NORMAL:1","LOW:2","HIGH:4") var lookup_layers : int = 0
|
||||
var entities : Array[Entity] = []
|
||||
|
||||
signal entity_added(entity : Entity)
|
||||
signal entity_removed(entity : Entity)
|
||||
signal collision_start
|
||||
signal collision_end
|
||||
|
||||
func _ready() -> void:
|
||||
area_entered.connect(on_area_entered)
|
||||
area_exited.connect(on_area_exited)
|
||||
|
||||
func on_area_entered(area: Area2D):
|
||||
if area is GenericCollider:
|
||||
if lookup_layers & area.layer != 0:
|
||||
add_entity(area.get_parent())
|
||||
|
||||
func on_area_exited(area: Area2D):
|
||||
if area is GenericCollider:
|
||||
if lookup_layers & area.layer != 0:
|
||||
remove_entity(area.get_parent())
|
||||
|
||||
func add_entity(entity : Entity):
|
||||
entities.append(entity)
|
||||
entity_added.emit(entity)
|
||||
if entities.size() == 1:
|
||||
collision_start.emit()
|
||||
|
||||
func remove_entity(entity : Entity):
|
||||
entities.erase(entity)
|
||||
entity_removed.emit(entity)
|
||||
if entities.size() == 0:
|
||||
collision_end.emit()
|
||||
|
||||
func get_colliding_entity() -> Entity:
|
||||
if entities.size() == 0:
|
||||
return null
|
||||
return entities[0]
|
||||
|
||||
func is_colliding() -> bool:
|
||||
return entities.size() > 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue