diff --git a/Instrument/Flute.gd b/Instrument/Flute.gd deleted file mode 100644 index 85e14c8..0000000 --- a/Instrument/Flute.gd +++ /dev/null @@ -1,16 +0,0 @@ -class_name Flute - -var Balle = preload("res://scenes/attaques/Balle.tscn").instantiate() # Charger le nœud Balle - - -func jouer_melodie(player_position) -> void: - print("La flûte joue une mélodie.") - spawn_balle(player_position) - - -func spawn_balle(player_position) -> void: - # Assurez-vous que vous ajoutez la balle comme enfant dans une scène appropriée - if Balle: - Balle.position = player_position # Place la balle à la position actuelle du joueur - else: - print("Erreur : la création de la balle a échoué.") diff --git a/project.godot b/project.godot index db07fcc..09e5c56 100644 --- a/project.godot +++ b/project.godot @@ -52,9 +52,24 @@ PAUSE={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } -JOUER_MUSIQUE={ +JOUER_MUSIQUE_HAUT={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +JOUER_MUSIQUE_BAS={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +JOUER_MUSIQUE_DROITE={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +JOUER_MUSIQUE_GAUCHE={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } diff --git a/scenes/attaques/BalB6AC.tmp b/scenes/attaques/BalB6AC.tmp new file mode 100644 index 0000000..d1632f6 --- /dev/null +++ b/scenes/attaques/BalB6AC.tmp @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://btpp8l4efhrmj"] + +[ext_resource type="Script" path="res://scripts/Instrument/balle.gd" id="1_4kd3w"] +[ext_resource type="Texture2D" uid="uid://csbrejwjfkspr" path="res://ressources/images/note1.png" id="1_qx664"] + +[node name="Balle1" type="CharacterBody2D"] +script = ExtResource("1_4kd3w") +speed = null + +[node name="Sprite2D" type="Sprite2D" parent="."] +rotation = 3.14159 +texture = ExtResource("1_qx664") + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2(0, -7) +target_position = Vector2(0, 15) diff --git a/scenes/attaques/BalE8C9.tmp b/scenes/attaques/BalE8C9.tmp new file mode 100644 index 0000000..5313e2b --- /dev/null +++ b/scenes/attaques/BalE8C9.tmp @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=3 uid="uid://btpp8l4efhrmj"] + +[ext_resource type="Script" path="res://scripts/Instrument/balle.gd" id="1_4kd3w"] +[ext_resource type="Texture2D" uid="uid://csbrejwjfkspr" path="res://ressources/images/note1.png" id="1_qx664"] + +[node name="Balle1" type="CharacterBody2D"] +script = ExtResource("1_4kd3w") + +[node name="Sprite2D" type="Sprite2D" parent="."] +rotation = 3.14159 +texture = ExtResource("1_qx664") + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2(0, -7) +target_position = Vector2(0, 15) diff --git a/scenes/attaques/Balle.tscn b/scenes/attaques/Balle.tscn index c6599bb..c50992c 100644 --- a/scenes/attaques/Balle.tscn +++ b/scenes/attaques/Balle.tscn @@ -1,8 +1,11 @@ -[gd_scene load_steps=2 format=3 uid="uid://btpp8l4efhrmj"] +[gd_scene load_steps=3 format=3 uid="uid://btpp8l4efhrmj"] -[ext_resource type="Texture2D" uid="uid://ge7xtkpw6hgb" path="res://ressources/images/note1.png" id="1_qx664"] +[ext_resource type="Script" path="res://scripts/Instrument/balle.gd" id="1_4kd3w"] +[ext_resource type="Texture2D" uid="uid://csbrejwjfkspr" path="res://ressources/images/note1.png" id="1_qx664"] -[node name="Balle1" type="CharacterBody2D"] +[node name="Balle1" type="CharacterBody2D" node_paths=PackedStringArray("raycast")] +script = ExtResource("1_4kd3w") +raycast = NodePath("RayCast2D") [node name="Sprite2D" type="Sprite2D" parent="."] rotation = 3.14159 diff --git a/scripts/Instrument/Flute.gd b/scripts/Instrument/Flute.gd new file mode 100644 index 0000000..fcd6de6 --- /dev/null +++ b/scripts/Instrument/Flute.gd @@ -0,0 +1,28 @@ +class_name Flute + +var scene_node = null + +func set_scene_parent(node: Node) -> void: + scene_node = node + + + +func jouer_melodie(player_position, direction_balle, angle) -> void: + spawn_balle(player_position, direction_balle, angle) + + +func spawn_balle(player_position, direction_balle, angle) -> void: + if scene_node == null: + print("Erreur : Aucun nœud parent défini pour ajouter la balle.") + return + + var balle = preload("res://scenes/attaques/Balle.tscn").instantiate() + if balle: + balle.position = player_position + balle.initial_direction = direction_balle + balle.rotation = deg_to_rad(angle) + scene_node.add_child(balle) + + + else: + print("Erreur : la création de la balle a échoué.") diff --git a/Instrument/Tambour.gd b/scripts/Instrument/Tambour.gd similarity index 100% rename from Instrument/Tambour.gd rename to scripts/Instrument/Tambour.gd diff --git a/scripts/Instrument/balle.gd b/scripts/Instrument/balle.gd new file mode 100644 index 0000000..8fca64b --- /dev/null +++ b/scripts/Instrument/balle.gd @@ -0,0 +1,20 @@ +extends CharacterBody2D + +@export var speed: float = 400 # Définir la vitesse de la balle +@export var raycast: RayCast2D + + + +# Direction initiale du mouvement +var initial_direction: Vector2 = Vector2(1, 0) # Exemple par défaut : vers la droite + +func _ready() -> void: + # Configurer la vitesse sur l'axe désiré + velocity = initial_direction * speed # Multiplie la direction initiale par la vitesse + +func _physics_process(delta: float) -> void: + move_and_collide(velocity * delta) + if raycast.is_colliding(): + queue_free() + + diff --git a/scripts/player_control.gd b/scripts/player_control.gd index a47bdbf..98d444b 100644 --- a/scripts/player_control.gd +++ b/scripts/player_control.gd @@ -9,7 +9,9 @@ var boost_speed = 0 var flute = null func _ready() -> void: - flute = load("res://Instrument/Flute.gd").new() + flute = load("res://scripts/Instrument/Flute.gd").new() + flute.set_scene_parent(get_tree().get_root()) + func _physics_process(delta: float) -> void: @@ -22,7 +24,7 @@ func _process(delta: float) -> void: if direction != Vector2.ZERO: - if direction.normalized() == previous_direction.normalized(): + if direction == previous_direction: if direction.x != 0 and direction.y != 0: boost_speed = min(boost_speed + acceleration / 16, (max_boost_speed - move_speed) / 8) else: @@ -33,6 +35,21 @@ func _process(delta: float) -> void: previous_direction = direction velocity = direction * (move_speed + boost_speed) - if Input.is_action_just_pressed("JOUER_MUSIQUE"): - flute.jouer_melodie(position) + if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT") or Input.is_action_just_pressed("JOUER_MUSIQUE_BAS") or Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE") or Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"): + var direction_balle = Vector2.ZERO + var angle = 0 + if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT"): + direction_balle = Vector2(0, -1) + angle = 180 + elif Input.is_action_just_pressed("JOUER_MUSIQUE_BAS"): + direction_balle = Vector2(0, 1) + angle = 0 + elif Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE"): + direction_balle = Vector2(1, 0) + angle = 270 + elif Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"): + direction_balle = Vector2(-1, 0) + angle = 90 + + flute.jouer_melodie(position, direction_balle, angle) pass