31 lines
794 B
GDScript
31 lines
794 B
GDScript
extends CharacterBody3D
|
|
|
|
@export var stats: EnemyStats
|
|
|
|
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
|
|
|
|
func _ready() -> void:
|
|
add_to_group("enemies")
|
|
if is_in_group("boss"):
|
|
BossData.register(self, stats)
|
|
BossData.set_stat(self, "spawn_position", global_position)
|
|
else:
|
|
EnemyData.register(self, stats)
|
|
EnemyData.set_stat(self, "spawn_position", global_position)
|
|
EventBus.entity_died.connect(_on_entity_died)
|
|
|
|
func _exit_tree() -> void:
|
|
if is_in_group("boss"):
|
|
BossData.deregister(self)
|
|
else:
|
|
EnemyData.deregister(self)
|
|
|
|
func _on_entity_died(entity: Node) -> void:
|
|
if entity == self:
|
|
queue_free()
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
if not is_on_floor():
|
|
velocity.y -= gravity * delta
|
|
move_and_slide()
|