Enemy.gd 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. @icon("res://Assets/Sprites/Editor/Enemy.png")
  2. class_name Enemy
  3. extends CharacterBody2D
  4. signal killed(direction: int)
  5. @export var on_screen_enabler: VisibleOnScreenNotifier2D = null
  6. @export var score_note_adder: ScoreNoteSpawner = null
  7. var direction := -1
  8. func damage_player(player: Player) -> void:
  9. player.damage()
  10. func apply_enemy_gravity(delta: float) -> void:
  11. velocity.y += (Global.entity_gravity / delta) * delta
  12. velocity.y = clamp(velocity.y, -INF, Global.entity_max_fall_speed)
  13. func die() -> void:
  14. killed.emit([-1, 1].pick_random())
  15. DiscoLevel.combo_amount += 1
  16. DiscoLevel.combo_meter = 100
  17. queue_free()
  18. func die_from_object(obj: Node2D) -> void:
  19. var dir = sign(global_position.x - obj.global_position.x)
  20. if dir == 0:
  21. dir = [-1, 1].pick_random()
  22. DiscoLevel.combo_amount += 1
  23. killed.emit(dir)
  24. queue_free()
  25. func flag_die() -> void:
  26. if on_screen_enabler != null:
  27. if on_screen_enabler.is_on_screen():
  28. queue_free()
  29. Global.score += 500
  30. if score_note_adder != null:
  31. score_note_adder.spawn_note(500)