Bouton musique

Bonjour à tous, malgré mes multiples essais, je ne parviens pas à activer/désactiver la musique. Dans mon jeu, la musique se lance au démarrage ( ça, ça marche), j’ai ajouté un bouton qui permettra d’arrêter ou remettre la musique, mais je ne parviens pas à trouver les bonnes conditions pour que ça fonctionne. Comment définir que, quand la musique est jouée, si je clique sur le bouton “musique” elle doit s’arrêter et reprendre si je clique à nouveau ?

Là il faut jouer avec des variables par exemples (ou des frames/animations de ta sprite qui fait office de bouton).

En gros, il te faut une variable qui change de statut lors du clic sur le bouton, par exemple en passant à “1”.
Si la variable en question est égale à “1” alors : stopper la musique.
Si tu recliques sur le bouton, faire “0” à la variable.
Si la variable est égale à 0, alors jouer la musique.

C’est un exemple grossier et schématique que je t’explique ici, mais la logique est la même que pour un bouton On/Off (et si “On” = ça s’allume, si “Off” ça s’éteint).

Voici ce que j’ai fait, mais …
1 Au lancement de la scène ---- Jouer la musique/Canal1 (ça ça fonctionne)
2 La musique est en train de jouer ----- Pas d’action
1 Le curseur/touché est sur “bouton-musique” ----- Pas d’action
2 Le bouton appuyé “left” ------ Audio/Musique sur canaux/Mettre en pause la musique/Canal1
3 La musique est arrêtée ------ Pas d’action
1 Le curseur/touché est sur “bouton-musique” ----- Pas d’action
2 Le bouton appuyé “left” ------ Audio/Musique sur canaux/Jouer la musique d’un canal/Canal1
Pas simple de faire un jeu, qui semble facile en théorie…

Tu utilises le même “bouton-musique” pour le marche/arrêt, je pense que ça vient de là… C’est toujours un peu complexe au début, mais en gros, ce problème vient du fait que ça “loop” :
le curseur est sur bouton musique, left est appuyé => arrêté => le curseur est sur bouton musique, left est appuyé = lire => le curseur est sur bouton musique, left est appuyé => arrêté => le curseur est sur bouton musique, left est appuyé = lire =>le curseur est sur bouton musique, left est appuyé => arrêté => le curseur est sur bouton musique, left est appuyé = lire => etc.

Tu vois le truc ? Il faut utiliser des variables comme je l’ai expliqué plus haut pour s’éviter ce genre de problème avec les conditions telles que tu as dû les renseigner.

Si tu bloques, astuce : utilises 2 boutons différents ! In pour la lecture, un pour l’arrêt.

Merci de ton aide, mais bon, ça dépasse mes compétences, je perds un temps fou pour des choses qui devraient être basiques. J’avais commencé le jeu en html/css et tout fonctionnait parfaitement, mais la gestion de calques, de zones maps, en superposition, se compliquait, c’est pour ça que je me suis tourné vers GDevelop. Mais là, le moindre élément se transforme en casse-tête. Je crois qu’il va me falloir trouver une autre solution, ou abandonner mon projet.

J’y suis encore !
Comment faire comprendre au programme que la musique est en train d’être jouée et que si je clique à nouveau sur le bouton “Musique” elle doit s’arrêter ?
Il y a une condition : “Une musique est en train d’être jouer sur canal:1” en JavaScript ça donne :
if (musique == 1) {
musique = 1;
}
Ce qui entraîne une action
Logiquement il faut un “else” pour le cas où la musique est arrêtée et que cliquer sur le bouton la remette en marche.
Quel est l’équivalent sur GDevelop ? Ou quelle est la méthode à utiliser ?
Merci

Else n’existe pas sur Gdevelop, il faut utiliser le bouton “inverser” (ou “invert condition” en anglais) sur la condition.

Ce qui donne ça dans les événements :
Capture.PNG

Merci Kink, je vais essayer.

Rien à faire ! quelque soit la condition que j’inverse. De plus, il supprime la condition précédente :
je clique sur le bouton et plutôt que d’arrêter la musique, il l’a relance. Qu’est ce qu’il manque ?

Salut, utilise une variable sinon montre ce que tu as fait parce que normalement c’est simple :wink:

Bonjour, je soutiens totalement le poste de kubuntu64. À mes débuts, je ne voulais pas toucher aux variables mais crois moi ça vaut le coup d’apprendre à les utiliser. Elles permettent d’apporter des solutions à pas mal de problèmes y compris le tien. Elles seront indispensables tout au long de ton projet.

Bref, l’idée est de créer une variable qui déterminera quand il faut jouer la musique et quand il faut l’arrêter. Par exemple, quand elle est à 1 tu joues la musique et quand elle est à 0 tu l’arrête. Maintenant, à chaque fois que tu cliques sur ton bouton, tu vérifies la valeur de ta variable et tu l’inverse.

Merci de ton aide Kubuntu64, je suis d’accord avec toi, je dois ajouter une variable, j’ai fais beaucoup de recherches et fait pas mal de tests, mais je n’ai pas encore trouvé de solution à mon problème. Je suis même aller voir d’autres moteurs de jeu, autant il semble facile de faire sauter un personnage de plateforme en plateforme ou de faire voler une chauve-souris, grâce à des tutos, autant mettre un bouton pour allumer ou arrêter la musique semble incroyablement compliqué, aucun tuto sur des choses aussi bêtes, en html ça fonctionne tout seul(avec les bons termes) mais là, sur les moteurs de jeu, tout semble se compliquer. Je perds un temps infini pour des détails de l’interface, tel que celui-ci et je n’ai pas encore pu commencer la partie réelle du jeu !!!
Pour ce que j’ai actuellement : la musique ce met en route au démarrage, si je clique sur le bouton musique, elle s’arrête, mais impossible de la relancer en cliquant à nouveau. Selon les divers tests que j’ai fait, soit la musique ne s’arrête plus ou chaque fois que je clique sur le bouton ça la duplique et c’est la cacophonie !!!

salut à toi. Peux-tu envoyer une capture d’écran de tes événements? J’aimerais voir quelles actions tu utilises pour jouer et arrêter la musique. Et d’ailleurs tu te sers de GD4 ou GD5? Chez-moi j’ai GD5. J’ai essayé de faire une démo, histoire de te montrer ma démarche avec les variables mais j’ai un petit souci (un bug): je n’arrive même pas à faire jouer la musique correctement.

Sinon, un petit conseil: si tu n’arrive pas à résoudre le problème de musique dans l’immédiat, ce n’est pas grave! Passe directement aux parties importantes de ton projet. Comme ça tu auras l’essentiel de fait et ça t’encouragera :wink:.

Salut, voilà la logique tu dois avoir: créer une variable et faire +1 à chaque fois que tu cliques sur ton bouton. Donner une limite pour ramener la valeur de cette variable à zéro pour faire un cycle. Dans le screen ci-joint c’est presque ça, il y a un oubli délibéré de ma part… Tout dans GDevelop est une logique à assimilé, une fois que tu as compris tu verras qu’en fait tout ce que tu veux faire est simple ! j’attends ta réponse :wink:
[/url][/img]

J’ai essayé tel que sur l’image que tu m’as envoyé, la musique démarre, mais se multiplie sans que j’intervienne sur quoique ce soit.
Après quelques modifs (Je te joins une capture d’écran (Mais comme tu vois, il y a un gros problème d’affichage (Je suis sur GDevelop4 sous Ubuntu)) donc, voici la traduction :

Au lancement de la scène // Faire la variable Musique =1

La variable Musique =1 // Jouer la musique sur le canal 1…
Déclenché une fois (En le mettant ici, j’évite la multiplication de la musique)

Le bouton “LEFT” a été relâché // Pas d’action
Le curseur/touché est sur Musique

Le bouton “LEFT” est pressé ou touché tactile // Faire la variable Musique =0

A ce niveau là, la musique démarre bien et sans multiplication, mais cliquer sur le bouton ne change rien. Donc je continue mes essais.


Voici, une capture d’écran qui reprend l’exemple de kubuntu64. les trois premiers événements concernent les manips entre la variable et le bouton, et les deux derniers, entre la variable et la musique. Observe les événement pour bien saisir le mécanisme: on se sert du bouton pour modifier la variable et on se sert de la variable pour contrôler le son.

Si tu as besoin de précisions n’hésite pas!

Merci pour ta réponse mackomando , je me suis appliqué à la reproduire, mais, ça ne fonctionne plus du tout. Plus de musique au démarrage et aucune action du bouton. c’est à ne rien y comprendre.

Comme dit dans mon post précédent, j’ai fais exprès d’oublier un évènement pour que tu te saisisses de la logique pour résoudre le problème. Dans ce que j’ai partagé, il ne se passe pas “rien”, à chaque fois que tu cliques sur le bouton la variable prend +1 de valeur jusqu’à 3 et repars à 1. Donc il manque une action quand elle est sur 2. Quand c’est sur 1, la musique est jouée, c’est à dire qu’elle est lancée mais une fois lancée rien ne l’arrête même si la variable change de valeur à moins de créer un événement pour ça…

J’ai eu le même problème que toi. Apparemment, il y a un bug qui fait qu’on n’entend pas la musique. Pour y remédier, quand je lance l’aperçue, je clique immédiatement sur la fenêtre du jeu et, pour une raison que j’ignore, ça fonctionne.

C’est à ne rien y comprendre. On a fait des tests sur Gdevelop5 en suivant les infos de Kubuntu64, en apportant quelques modifs ça fonctionne; je refait exactement la même chose sur le version4 et rien ne fonctionne !!! Quelle galère !! Existe-t-il une version 5 Linux 32 bits ?