40 lines
1.3 KiB
GDScript
40 lines
1.3 KiB
GDScript
class_name Flute
|
|
|
|
var scene_node = null
|
|
var balle_template = preload("res://scenes/attaques/Balle.tscn")
|
|
var color_index = 0
|
|
var color_list = [
|
|
preload("res://ressources/images/note1.png"),
|
|
preload("res://ressources/images/note2.png"),
|
|
preload("res://ressources/images/note3.png"),
|
|
preload("res://ressources/images/note2.png")
|
|
]
|
|
|
|
@export var cooldown = 0.5 # Durée du cooldown en secondes
|
|
var is_on_cooldown = false # Indique si le cooldown est en cours
|
|
|
|
func set_scene_parent(node: Node) -> void:
|
|
scene_node = node
|
|
|
|
|
|
|
|
func _process(delta) -> void:
|
|
pass # Cette fonction est requise pour que delta fonctionne correctement
|
|
|
|
|
|
func jouer_melodie(player_position: Vector2, direction_balle: Vector2, angle: float) -> void:
|
|
if not is_on_cooldown: # Vérifiez si nous pouvons tirer
|
|
spawn_balle(player_position, direction_balle, angle)
|
|
|
|
|
|
func spawn_balle(player_position: Vector2, direction_balle: Vector2, angle: float) -> void:
|
|
if scene_node == null:
|
|
print("Erreur : Aucun nœud parent défini pour ajouter la balle.")
|
|
return
|
|
var balle = balle_template.instantiate()
|
|
balle.position = player_position
|
|
balle.initial_direction = direction_balle
|
|
balle.rotation = deg_to_rad(angle)
|
|
color_index = (1 +color_index)% len(color_list)
|
|
balle.get_node("Sprite2D").texture = color_list[color_index]
|
|
scene_node.add_child(balle)
|