| [RESOLU]Jouer un son qu'une seule fois | |
|
|
Auteur | Message |
---|
Mray Très bonne participation
Messages : 111
| Sujet: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 2:34 | |
| Bonjour, J'ai fais un levier et un trampoline dans mon "jeu" et j'aimerais que quand je saute dessus ( le trampoline ) le son joue qu'une seule fois ( chaque fois qu'il touche le trampoline ), mon problème est que quand je met mon personnage "sous" le trampoline, il fait le son a répétition affolante Uu Pareil pour le levier, quand je suis en contact avec lui, il fait une imitation de mitraillette De l'aide, svp
Dernière édition par Mray le Mar 13 Sep 2011 - 20:54, édité 1 fois |
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 3:17 | |
| C'est un problème de collision persistante plutôt qu'un problème de son. Comme ton perso est en contact avec l'objet il exécute constamment les actions liés. une façon simple de faire serait avec une variable(je vais dire EnContact pour l'exemple)
EnContact = false // Pas de collision Si contact ET que EnContact == false Exécute le son EnContact = true//Ca permet d'éviter que le son se remet en boucle
Sinon EnContact = false//Retour à la normal si pas de collision
Il y en sans doute d'autre façon de faire mais j'ai rien d'autre pour l'instant. |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 17:14 | |
| Comme sur l'autre topic... je sais pas vraiment utiliser les variables, tu pourrais me faire un screen de ce que ça donnerait dans l'objet du perso ? Si ça te dérange pas :/ |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 17:21 | |
| C'est pas compliqué. Créer une variable c'est dire : je veux tel valeur pour tel mot.
Tu veux créer une variable ? Bah tu fait
monSuperMot = valeur
par ex: vie = 5 munitions = 40 armure = 12
on déclare une variable dans create, au moins elle prend la valeur qu'on veux et ensuite on peut les utiliser.
Par exemple j'ai la variable armure a 12 dans mon create. Bah maintenant ce que je peut faire, c'est dans un event de collision avec un ennemi lui enlever 1.
armure -= 1
et dans ton event step tu peut vérifier l'etat de ton armure, et si elle atteint 0 tu fait quelque chose
if(armure<=0) show_message("bouhouhouhou")
Y a pas grand chose a dire de plus sur les variables. C'est la base d'un jeu et si tu sais pas les utiliser t'apprend. Sinon tu passe a autre chose... (qu'essayer de faire un jeu) |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 17:36 | |
| - onilink_ a écrit:
- C'est pas compliqué. Créer une variable c'est dire : je veux tel valeur pour tel mot.
Tu veux créer une variable ? Bah tu fait
monSuperMot = valeur
par ex: vie = 5 munitions = 40 armure = 12
on déclare une variable dans create, au moins elle prend la valeur qu'on veux et ensuite on peut les utiliser.
Par exemple j'ai la variable armure a 12 dans mon create. Bah maintenant ce que je peut faire, c'est dans un event de collision avec un ennemi lui enlever 1.
armure -= 1
et dans ton event step tu peut vérifier l'etat de ton armure, et si elle atteint 0 tu fait quelque chose
if(armure<=0) show_message("bouhouhouhou")
Y a pas grand chose a dire de plus sur les variables. C'est la base d'un jeu et si tu sais pas les utiliser t'apprend. Sinon tu passe a autre chose... (qu'essayer de faire un jeu) Ce que je n'ai pas compris dans le post de Wargamer, s'est, le fait qu'il parle de EnContact = false // Pas de collision Si contact ET que EnContact == false Exécute le son EnContact = true//Ca permet d'éviter que le son se remet en boucle Sinon EnContact = false//Retour à la normal si pas de collision Le "EnContact = false // Pas de collision", encontact = false, le false correspond à 0 dans le set variable ? Puis le set variable je le met dans un event collision avec le levier ? Je suis débutant avec les variables, m'en veut pas trop onilink... |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 18:13 | |
| En gros c'est simple, ton code step est exécuté en boucle par ton jeu, de l'ordre de 30/60 fois par seconde (normalement 30, ça dépend de ta room_speed) Bon, maintenant admettons que t'aies un objet qui soit en collision avec un autre, et dans ce cas tu tapperais un truc du style : if (objet_en_collision==true) { play_sound(lesonblablabla); } Ce qui signifie que tant que ton objet est en collision, tu vas jouer le son, étant donné que le code est exécuté 30x par seconds, bah tu te retrouves à jouer 30fois le son en une seconde. Pour éviter ça, tu fais ça : (remplace "objet_en_collision==true par ta fonction pour les collisions, comme place_meeting & compagnie) (dans le create) collision=false; (dans le step) if (objet_en_collision==true and collision==false) { play_sound(lesonblablabla); collision=true; } if (object_en_collision==false) { collision=false; } Du coups, pour jouer le son il faut que ta variable collision soit fausse, une fois le son joué tu la passe à true, ce qui fait que le son n'est pas répété. Enfin, tu la remet à false lorsqu'il n'y a plus de collision, sinon ton son ne serait joué qu'une seule fois dans tout le jeu ) |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 18:32 | |
| Je suis vraiment une... une *****, je c/c ton code termite en essayant de le comprendre, en gros, dans le create, ça définis le collision en false, ok. Après dans le step, si l'objet en collision et que collision = false, alors ça joue le son et ça passe le collision en true, pour éviter le répètement, le reste du code, si l'objet de collision n'ets pas en collision alors, collision = false, c'ets a peu près ça ? Quand je fais ça j'ai un message d'erreur >>> ___________________________________________ FATAL ERROR in action number 1 of Step Event for object levier: COMPILATION ERROR in code action Error in code at line 3: play_sound(levier_crick); ^ at position 2: Unknown function or script: play_sound Je crois que c'est vraiment tout con mais je comprends vraiment pas, j'ai changé le lesonblablabla en levier_crick ( qui est le sound ) mais c'est toujours la même |
|
| |
Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 18:36 | |
| |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 18:46 | |
| Effectivement c'est sound_play Mais avec ceci >>> if (levier==true and collision==false) { sound_play(levier_crick); collision=true; } if (levier==false) { collision=false; } Je n'ai aucun son qui se joue |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 18:54 | |
| Ouais, l'habitude de mon moteur pour le play_sound Sinon, quand est-ce que tu passes levier à true ? |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 19:04 | |
| Euh j'ai pas compris la question :/
|
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 19:46 | |
| Je crois que le mieux dans ton cas serait d'aller faire un tour sur les ateliers d'onilink https://cbna.forumactif.com/t11209-atelier-gml-1-fonctions-et-variablesEt il voulait dire, dans ton code tu as if (levier == true c'est quand que tu met levier à true dans ton code? Tu met collision à true ou false après, normal, mais levier ne change jamais de valeur par contre |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 20:33 | |
| Euh effectivement j'ai jamais mis levier à true, je pourrais le placer ou ? Edit: chaque fois que je place un levier=true; ça plante |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Lun 12 Sep 2011 - 23:10 | |
| Rooh, mais par exemple, dans le step (en reprenant ton code) :
if (place_meeting(x,y,l'objet que tu veux)) levier=true; else levier=false;
(sinon tu peux faire levier = place_meeting(x,y,l'objet que tu veux));
if (levier==true and collision==false) { sound_play(levier_crick); collision=true; }
if (levier==false) { collision=false; }
Sans oublier dans le create
levier=false; collision=false;
Voilà |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Mar 13 Sep 2011 - 17:26 | |
| Bon j'abandonne l'idée du levier, le simple fait de mettre levier=false ça me fait planter le jeu, merci de m'avoir aidé, et désoler de vous avoir fais perdre votre temps :/ |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Mar 13 Sep 2011 - 19:38 | |
| ce qu'il faut comprendre surtout c'est que tant que l'objet est en collision le programme répète inlassablement l'action! il faut donc créer une variable qui "surclasse" l'event collision ,ou déplacer le perso pour qu'il ne soit plus en collision. une autre solutions consiste a créer une variable qui temporise l'event collision. c'est a dire: dans event collision tu met: si variable time=0 { time = 1 //annule les répétitions car time n'est plus égale à 0 joue un son fait ce que tu veux } puis dans un second temps tu décide quand tu veux remettre ta variable time à 0 avec un event alarm |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Mar 13 Sep 2011 - 20:51 | |
| OMAGAD JE VIENS DE REUSSIR !!! Je suis content, car, cette fois ci, j'ai vraiment réalisé tout le code ( ouais bon c'est pas beaucoup mais ça m'a pris quand même 1 heure avant de réussir :p ) et il marche !! Je remercie tout ceux qui m'ont aidé, voici ce que j'ai fait >>> -J'ai crée un autre objet du nom de contour -J'ai crée mon levier -J'ai crée mes objets contour et objets -J'ai mis mon levier, et tout autour j'ai mis l'objet contour ( contour est invisible et n'est pas solide ) J'ai fais ce code >>> Dans contour >>>Dans Create >>> - Code:
-
collision=false; levier1=true; Dans Collison avec le Player >>> - Code:
-
if (collision=true) { levier1=false } else { levier1=true } Dans mon objet levier >>>Dans Create >>> Set variable levier1 to 1 Dans Collision avec le Player >>> - Code:
-
if (levier1==true) { sound_play(levier_crick); levier1=false; collision=true } Et voilà ça marche ! Ça pourra peut-être aidé des nouveaux qui veulent faire la même chose suffisait juste que j'ai l'esprit logique que j'ai pas eu au début |
|
| |
Mray Très bonne participation
Messages : 111
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois Mar 13 Sep 2011 - 20:58 | |
| Enfaite je viens de me rendre compte que l'objet contour sert strictement a rien, j'ai cherché trop compliqué... Pas besoin de le faire |
|
| |
Contenu sponsorisé
| Sujet: Re: [RESOLU]Jouer un son qu'une seule fois | |
| |
|
| |
| [RESOLU]Jouer un son qu'une seule fois | |
|