probleme mit double jump

  • Allgemein

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

  • probleme mit double jump

    ich habe ein problem mit meinem double jump.

    wenn ich "Space" langsam drücke klappt alles aber wenn ich sie schnell drücke springt mein char höher als er soll und auch der sound wird doppelt oder dreifach abgespielt.

    GML-Quellcode

    1. //double jump//
    2. // abfrage ob der spieler space losgelassen hat
    3. if djump = 0 && keyboard_check_released(vk_space)
    4. {djump = 1}
    5. // der double jump wird ausgeführt und ein weiterer sollte dann durch djump=2 verweigert werden
    6. if djump = 1 && keyboard_check_pressed(vk_space) && fall = 0
    7. {djump = 2;vspeed-=4;jump = 1;audio_play_sound(snd_player_jump,1,0)}
    8. // durch das aufkommen auf dem boden wird djump wieder auf 0 gesetzt und dadurch wird es wieder möglich einen double jump zu machen.
    9. if place_meeting(x,y,obj_Stopper) && djump = 2
    10. {djump = 0}
    Alles anzeigen


    ich finde den fehler einfach nicht :D
  • der code ist im STEP event und die Variablen im CREAT des Players ;)

    GML-Quellcode

    1. if run = 1 and djump = 0 and crunch = 0 and water = 0 and keyboard_check_pressed(vk_space) && !place_free(x,y+1) {vspeed-=6;jump = 1;audio_play_sound(snd_player_jump,1,0)}


    den ersten jap habe ich nur nicht gepostet aber er is da ;)

    da ich den double jump ja mit der gleichen taste ausführe fliegt des spieler noch ober raus wenn ich es nicht mit der abfrage mache
  • Probier mal djump an der stelle auf 1 zu setzen.
    Machst du mit der "jump" variable an der stelle noch etwas?
    Vielleicht erkennt der GM das Release nicht, wenn im selben/nächsten step die taste schon wieder gedrückt wurde.

    EDIT: Durch das "_pressed" wird der jump sowieso nur einmal ausgeführt, zusätzlich prüfst du noch ob djump=0 ist.
  • GML-Quellcode

    1. //jump//
    2. if run = 1 and djump = 0 and crunch = 0 and water = 0 and keyboard_check_pressed(vk_space) && !place_free(x,y+1)
    3. {vspeed-=6;jump = 1;audio_play_sound(snd_player_jump,1,0);djump=1}
    4. //double jump//
    5. if djump = 1 && keyboard_check_pressed(vk_space){djump = 2;vspeed-=4;jump = 1;audio_play_sound(snd_player_jump,1,0)}
    6. if place_meeting(x,y,obj_Stopper) && djump = 2 {djump = 0}


    gibt leider nur ein großen sprung und kein doppelten ;)
  • Pack den Codeabschnitt mit dem double jump über den einfachen jump.

    Die Frage bleibt ob der Code tatsächlich was anderes tut, als du willst.
    Eventuell stört es dich, dass du zweimal springen kannst bevor der erste Sprung seinen Scheitelpunkt erreicht hat.
    Wenn du da zweimal schnell hintereinander springst, sieht es aus wie ein großer Sprung, weil du den vspeed subtrahierst und er somit vspeed-=8 wird.
    Denke "vspeed=-4" (statt "vspeed-=4")entspricht eher einem Sprung, sonst kannst du beim fallen mit vspeed>4 gar nicht einen Doppelsprung machen.