Springen funktioniert auf einmal nicht mehr

  • Allgemein

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

  • Springen funktioniert auf einmal nicht mehr

    Hallo gm-d,

    ich hab ein komisches Problem. Mein Spiel hat bis dato super funktioniert, doch auf einmal, (nach dem dem Update) funktioniert das Springen nicht mehr wirklich :/ Irgendwie schwer zu erklären. Es hat alles funktioniert und auf einmal funktioniert das Hüpfen nicht mehr. Mein Spieler hüpft jetzt einfach ununterbrochen nach oben obwohl ich überprüfe ob der Boden unter ihm ist.
    -Step event-

    GML-Quellcode

    1. if (keyboard_check(vk_up) or keyboard_check(ord('W')) && place_meeting(x,y+1,obj_block_parent) && vspeed == 0) {
    2. vspeed = -jump;
    3. }

    Wenn ich dies jetzt als Kommentar mache oder rausnehme, hüpft der Spieler nicht mehr, ist ja klar. Aber wieso funktioniert das von dem einem Tag auf den anderen nicht mehr? Hoffe jemand hat eine Lösung dazu und ich hoffe es sind genug Infomrationen (mehr kann ich irgendwie nicht hergeben, es gibt einfach nichts was ich euch zeigen soll, da ja alles funktioniert hat :S )

    LG Afroman
  • Problem liegt am OR

    Wenn du testest ob vk_up gedrückt wird musst du zusätzlich auch place_meeting(x,y+1,obj_block_parent) && vspeed == 0 testen.
    Z.B. so:


    GML-Quellcode

    1. if ((keyboard_check(vk_up) && place_meeting(x,y+1,obj_block_parent) && vspeed == 0) or (keyboard_check(ord('W')) && place_meeting(x,y+1,obj_block_parent) && vspeed == 0)) {
    2. vspeed = -jump;
    3. }


    Ansonsten würde getestet ob vk_up gedrückt ist. Falls dem so ist wird true zurück gegeben.
    ODER ob W gedrückt ist UND eine Kollision unter ihm stattfindet UND vspeed = 0 ist.
    Sorm ist Schuld

    Edit: Doch ist er

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

  • Pacmangamer:
    doppelter code :(

    so isses besser

    GML-Quellcode

    1. if ((keyboard_check(vk_up) || keyboard_check(ord('W'))) && place_meeting(x,y+1,obj_block_parent) && vspeed == 0)
    2. {
    3. vspeed = -jump;
    4. }

    Ich würde sowas aber lieber aufteilen,
    Ist viel schöner und lässt sich besser bearbeiten falls du weitere faktoren einbauen willst:

    GML-Quellcode

    1. var jumpkeyPressed = (keyboard_check(vk_up) || keyboard_check(ord('W')));
    2. var onGround = (place_meeting(x,y+1,obj_block_parent) && vspeed == 0); // ich hinterfrage mal nicht wieso du vspeed noch überprüfst du musst schon deine gründe dafür haben :P
    3. if (jumpkeyPressed && onGround)
    4. {
    5. vspeed = -jump;
    6. }
    :saint:

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

  • Benutzer online 1

    1 Besucher