Sound Probleme (Sound soll nicht unendlich mal abgespielt)

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sound Probleme (Sound soll nicht unendlich mal abgespielt)

    Hi, ich bin gerade am rumexperimentieren und ich komm einfach nicht weiter. Mein Spieler Objekt in meinem "Top Down Shooter" solle einen Sound abspielen wenn er Schaden nimmt. Beispielsweise durch das Berühren eines Gegners. Doch nun ,wenn man mit der Spielfigur in den Gegener reinrennt wir permanent schaden abgezogen und so wird auch permanent der Sound abgespielt. Das klingt ziemlich hässlich und so habe ich versucht den sound in regelmäßigen abständen abzuspielen wenn man Schaden bekommt. Doch ich bin da is jetzt immernoch erfolglos. :headtouch: :D

    ^^ bitte helft mir :)
  • Problem ist ja klar solange die Kollision da ist wird auch die Variable immer wieder hochgesetzt...
    Lösung 1= Habe leerlauf am Ende der Sound Datei (Ohne Ton) und frage ab ob der Sound gerade abgespielt wird frage diesen Code im Kollisions Event ab:

    GML-Quellcode

    1. if !sound_isplaying (Hit) {sound_play (Hit)}


    Lösung 2= Setze Variablen die sich selber aushebeln:
    Erstelle die Variable "aua" im Create Event:

    GML-Quellcode

    1. aua = 0


    im Step Event:

    GML-Quellcode

    1. if instance_place(x,y,AUAOBJEKT) and aua = 0 {sound_play (Hit) aua =1}
    2. if aua > 0 {aua-=0.2} if aua < 0 {aua = 0}
  • Danke erstmal, für die schnellen und hilfreichen antworten. aber ich glaub ich muss immer etwas grundlegendes übersehen, wenn ich eine variable erstell.
    habe es genau so gemacht wie du gesagt hast also im create event aua = 0 ... usw und trotzdem meldet mir Game Maker jedes mal das er die vaiable "aua" nicht kennt :headtouch: :/ ich werd noch nen bisschen rumprobieren ^^ ...
  • (aua an sich ist keine globale variable, also musst du lokal in jedem Object das die Variable aua individuell benutzen soll, erstmal aua als variable deklarieren.)

    grad nochmal gesehn dass du das im Create Event eh gemacht hast, ich hoffe im selben Objekt, ansonsten muss er die variable ja kennen. Du kannst aua ja mal auf 0.2 stellen im Create Event und dann im Debug modus das Spiel starten und nachsehen ob sich der Wer ändert.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • war mal wieder einfach nur ein total bescheuerter fehler von mir. XDDD

    er könnte die variable "aua" nicht erkennen weil ich für meine "schuss instance" die variable "aua" nicht deklariert habe und so meldete er jedes mal einen Error wenn ich losballern wollte. Eigentlich soo naheliegend. :headtouch:

    aber trotzdem funktioniert das ganze nicht so wie es soll :/

    also der sound soll einfach nur nicht alle millisekunde 3000000 Millionenmal abgespielt werden XDD.
    sondern er soll wenn man "schaden kassiert" in abständen von ner halben oder ganzen sekunde den sound abspielen und wenn man gar kein schaden mehr nimmt nicht spielen. ^^

    ich will mich auch nochmal für eure hilfsbereitschaft bedanken das forum is echt der Hammer.
  • Create Event:

    GML-Quellcode

    1. h_col=false;


    Bei collision:

    GML-Quellcode

    1. if(!h_col)
    2. {
    3. sound_play(hit);
    4. alarm[0..9]=1*room_speed;
    5. h_col=true;
    6. }


    Ins alarm Event(der oben benutzt wurde):

    GML-Quellcode

    1. h_col=false;


    Habs nicht getestet müsste aber funktionieren.
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonXZ ()

  • komischer weise nicht, obwohl deine Weise ziemlich einleuchtend aussieht probier grad schon wieder stunden an dem Zeug XDDDD.
    Das ergebnis von deinem code war, das das spielerobjekt nachdem es von dem gegenerobjekt "collidiert" wurde den sound abspielt aber nur einmal und erst wenn das Spieler objekt durch einen instance-wechsel sozusagen neucreatet wird kann der sound wieder nur 1-mal abspielen.

    Also ich hab im create event von meinem Spielerobjekt

    h_col=false

    stehen. Bei der Collision mit dem Gegnerobjekt

    if(!h_col)
    {
    sound_play(hit);
    alarm[1]=1*room_speed;
    h_col=true;
    }


    und im Alarm[1] der auf dem alarm im "collsionscode" beruht hab ich

    h_col=false;

    stehen. Also genau so wie dus demonstriert hast. :headtouch:
  • Versuch mal das ins Alarm event:

    GML-Quellcode

    1. sound_stop(hit);
    2. h_col=false;


    Wenn das auch nicht geht:
    Erstell ein neues Objekt.
    Und mach h_col global.

    Bei collision mit Gegner:

    GML-Quellcode

    1. if(!global.h_col)
    2. {
    3. instance_create(x,y,obj_col_snd);
    4. global.h_col=true;
    5. }


    Create Event bei obj_col_snd:

    GML-Quellcode

    1. alarm[0]=1*room_speed;


    Alarm[0] Event:

    GML-Quellcode

    1. sound_play(hit);
    2. global.h_col=false;
    3. instance_destroy();
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Benutzer online 1

    1 Besucher