capsule.gd 928 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class_name Capsule
  2. extends Node2D
  3. ## Contient un pouvoir qui se declenche au contact de la raquette
  4. const VITESSE_DESCENTE: float = 100.0 # px / sec
  5. var pouvoir: PouvoirBase = null:
  6. set=set_pouvoir
  7. func _physics_process(delta: float) -> void:
  8. _descendre(delta)
  9. func set_pouvoir(nouveau_pouvoir: PouvoirBase) -> void:
  10. modulate = nouveau_pouvoir.couleur_principale()
  11. pouvoir = nouveau_pouvoir
  12. func _descendre(delta: float) -> void:
  13. position.y += VITESSE_DESCENTE * delta
  14. func _declencher_pouvoir() -> void:
  15. print("Le pouvoir ", pouvoir, " se declenche !")
  16. pouvoir.declencher_pouvoir(get_tree())
  17. func _auto_detruire() -> void:
  18. queue_free()
  19. func _quand_verificateur_visibilite_detecte_sortie_ecran():
  20. _auto_detruire()
  21. func _quand_zone_activation_detecte_un_corps(corps: Node2D) -> void:
  22. if corps is Raquette: # toujours le cas si calque collision bien configure
  23. _declencher_pouvoir()
  24. _auto_detruire()