balle_de_feu.gd 958 B

1234567891011121314151617181920212223242526272829303132333435
  1. class_name BalleDeFeu
  2. extends Balle
  3. const DEGATS_FEU: int = 5
  4. const BalleDeFeuScene: PackedScene = preload("res://composants/objets/balle/balle_de_feu/balle_de_feu.tscn")
  5. const duree_clignotement_max: float = 0.2 # sec
  6. var _duree_clignotement: float = 0.0
  7. @onready var image: Sprite2D = $Image
  8. func _process(delta: float) -> void:
  9. _clignoter(delta)
  10. func _clignoter(delta: float) -> void:
  11. _duree_clignotement += delta
  12. if _duree_clignotement > duree_clignotement_max:
  13. image.flip_v = not image.flip_v
  14. _duree_clignotement = 0.0
  15. ## La balle de feu fait plus de degats
  16. func _impacter_brique(brique: Brique) -> void:
  17. brique.frapper(DEGATS_FEU)
  18. ## Transforme une balle quelconque en balle de feu
  19. static func transformer(balle: Balle) -> void:
  20. var balle_de_feu: BalleDeFeu = BalleDeFeuScene.instantiate()
  21. balle.add_sibling.call_deferred(balle_de_feu) # Appeler plus tard sinon Godot pas content
  22. balle_de_feu.recopier(balle)
  23. balle.queue_free()