123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- class_name BalleDeFeu
- extends Balle
- const DEGATS_FEU: int = 5
- const BalleDeFeuScene: PackedScene = preload("res://composants/objets/balle/balle_de_feu/balle_de_feu.tscn")
- const duree_clignotement_max: float = 0.05 # sec
- var _duree_clignotement: float = 0.0
- @onready var image: Sprite2D = $Image
- func _process(delta: float) -> void:
- _clignoter(delta)
- func _clignoter(delta: float) -> void:
- _duree_clignotement += delta
- if _duree_clignotement > duree_clignotement_max:
- image.flip_v = not image.flip_v
- _duree_clignotement = 0.0
- func _diriger(vers: Vector2) -> void:
- image.rotation = Vector2.RIGHT.angle_to(vers)
- ## La balle de feu fait plus de degats
- func _impacter_brique(brique: Brique) -> void:
- brique.frapper(DEGATS_FEU)
- ## La balle de feu a besoin de s'orienter quand sa direction change
- func _mettre_en_mouvement(dir: Vector2) -> void:
- super._mettre_en_mouvement(dir)
- _diriger(dir)
- ## La balle de feu a besoin de s'orienter quand sa direction change
- func _rebondir(impact: KinematicCollision2D) -> void:
- super._rebondir(impact)
- _diriger(_mouvement)
- ## Transforme une balle quelconque en balle de feu
- static func transformer(balle: Balle) -> void:
- var balle_de_feu: BalleDeFeu = BalleDeFeuScene.instantiate()
- balle.add_sibling.call_deferred(balle_de_feu) # Appeler plus tard sinon Godot pas content
- balle_de_feu.recopier(balle)
- balle.queue_free()
|