Sounds werden mehrmals gleichzeitig abgespielt

  • GM 8
  • Sounds werden mehrmals gleichzeitig abgespielt

    Bei Find the Key 2 haben wir ein Sound Problem. Und zwar, soll wenn der Spieler weniger als 25% Leben hat, ein Sound geloopt werden (das ist so ein Atem Sound, dass der Spieler müde ist) und der Bildschirm wird verschwommen und unscharf. Sobald der Spieler weniger als 15% Leben hat, wird ein anderer Sound abgespielt (auch wieder geloopt) diesmal Atmen mit Herzklopfen. Und wenn der Spieler stirbt, soll zuerst ein "Ahhhh" Sound und dann die "Todesmusik" abgespielt werden (die Musik wird auch geloopt bis man den Spieler respawnen lässt). Nun wird aber pro Step der Sound neu abgespielt, und der alte Sound bleibt. Also hört man nach wenigen Sekunden über 20x den gleichen Sound im Abstand von einem Step. Das hört sich dann sau komisch an. Hier der Ausschnitt vom Code (ist im Player Step Event):

    GML-Quellcode

    1. //Schmerz-Sound
    2. if health > 25 or health <= 0
    3. {
    4. sound_stop(schmerz_00)
    5. sound_stop(schmerz_01)
    6. }
    7. if health <= 25
    8. {
    9. if !sound_isplaying(schmerz_00)
    10. {
    11. sound_play(schmerz_00)
    12. sound_loop(schmerz_00)
    13. }
    14. }
    15. if health <= 15
    16. {
    17. sound_stop(schmerz_00)
    18. if !sound_isplaying(schmerz_01)
    19. {
    20. sound_play(schmerz_01)
    21. sound_loop(schmerz_01)
    22. }
    23. }
    24. if health <= 0
    25. {
    26. if !sound_isplaying(music_died) and !sound_isplaying(hurt_big)
    27. {
    28. sound_play(music_died)
    29. sound_loop(music_died)
    30. sound_play(hurt_big)
    31. sound_stop(schmerz_00)
    32. sound_stop(schmerz_01)
    33. }
    34. }
    Alles anzeigen

    schmerz_00 = Der Atem Sound von 15% bis 25%
    schmerz_01 = Straker Atem Sound + Herzklopfen wenn Spieler unter 15% Leben hat
    hurt_big = Sound der vor der Todesmusik abgespielt wird
    music_died = Die Todesmusik
  • GML-Quellcode

    1. //sagen wir die Variable health hat im Moment 12
    2. if health <= 25 //diese Abfrage springt an
    3. {
    4. if !sound_isplaying(schmerz_00)
    5. {
    6. sound_play(schmerz_00)
    7. sound_loop(schmerz_00)
    8. }
    9. }
    10. if health <= 15 //diese ebenso
    11. {
    12. sound_stop(schmerz_00)
    13. if !sound_isplaying(schmerz_01)
    14. {
    15. sound_play(schmerz_01)
    16. sound_loop(schmerz_01)
    17. }
    18. }
    Alles anzeigen


    du könntest nun entweder wie folgt agieren:

    GML-Quellcode

    1. if health <= 25 && health >=15
    2. {
    3. if !sound_isplaying(schmerz_00)
    4. {
    5. sound_play(schmerz_00)
    6. sound_loop(schmerz_00)
    7. }
    8. }
    9. if health <= 15 && health >= 0
    10. {
    11. sound_stop(schmerz_00)
    12. if !sound_isplaying(schmerz_01)
    13. {
    14. sound_play(schmerz_01)
    15. sound_loop(schmerz_01)
    16. }
    17. }
    Alles anzeigen


    oder mit else kombinieren: else if
  • Ok, danke. Wir haben aber eine Art Bug. Und zwar wenn man z.B 20% Leben hat, wird ja der eine Sound abgespielt. Wenn man dann Schaden bekommt, und man 10% Leben hat, soll ja der andere Sound abgespielt werden. Tut er auch, aber irgendwie wird der alte (bei Leben 15 bis 25) immernoch abgespielt. Hier nochmal unseren aktuellen Sound Code:

    GML-Quellcode

    1. //Schmerz-Sound
    2. if health >= 25
    3. {
    4. sound_stop(schmerz_00)
    5. sound_stop(schmerz_01)
    6. }
    7. if health <= 25 && health >=15
    8. {
    9. if !sound_isplaying(schmerz_00)
    10. {
    11. sound_play(schmerz_00)
    12. sound_loop(schmerz_00)
    13. }
    14. }
    15. else
    16. {
    17. sound_stop(schmerz_00)
    18. }
    19. if health <= 15 && health > 0
    20. {
    21. if !sound_isplaying(schmerz_01)
    22. {
    23. sound_play(schmerz_01)
    24. sound_loop(schmerz_01)
    25. }
    26. }
    27. else
    28. {
    29. sound_stop(schmerz_01)
    30. }
    31. if health <= 0
    32. {
    33. if !sound_isplaying(music_died) and !sound_isplaying(hurt_big)
    34. {
    35. sound_play(music_died)
    36. sound_loop(music_died)
    37. sound_play(hurt_big)
    38. sound_stop(schmerz_00)
    39. sound_stop(schmerz_01)
    40. }
    41. }
    Alles anzeigen


    Und kennt vielleicht jemand ein paar Seiten wo man Leute finden kann die als Musik Designer oder Grafiker etwas machen könnten? (Außer bei IndieDB und Spieleprogrammier.de).

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

  • Benutzer online 1

    1 Besucher