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()