Sprung Problem in Platformer Engine

  • GM 8
  • Sprung Problem in Platformer Engine

    Tag an alle!,

    Ich arbeite gerade an einer kleinen Platformer Engine und bin an einem Problem stecken geblieben das ich einfach nicht lösen kann.
    Mein Ziel : Spieler soll nicht kontinuierlich springen wenn die Sprung-Taste gedrückt gehalten wird.
    Problem : Mit dem folgenden Code, springt der Spieler erst garnicht mehr! Das schlimmste ist dass ich es nicht sehe, wo das Problem liegt, ich bin noch nicht gut beim coden und hab warhscheinlich bei der Variable Erstellung irgendwas vergessen.

    Ich habe es mit diesem Code versucht :

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up)) //spieler sollte so nur dann erneut springen können sobald die variable wieder zu true wird (hier, wenn die sprung taste also losgelassen wird)
    2. {jumps = false;}
    3. if (keyboard_check_released(vk_up))
    4. {jumps = true;}
    5. if in_air = false && jumps == true //jump setting
    6. {if (keyboard_check(vk_up))
    7. {vspeed = -12;}
    8. }


    Es hat am Anfang funktioniert, dann habe ich irgendwie dummerweise versucht die Tasten zu ändern, und hab das irgendwie gelöscht, und bei einer kleinen Änderung die ich nicht sehe, irgendwo, liegt es wahrscheinlich. Ich meine, dass es nicht an dieser Idee liegt, da es vorher ja reibungslos funktioniert hat, irgendwas bescheuertes hab ich gemacht und alles versaut (Ich wusste nicht dass Coden so verdammt frustrierend sein kann. :headtouch: )

    Hier ist meine kleine Engine zum Download : materialordner.de/v0dFKiDZaYHMImORByb5YPXtWpXaIuv.html

    Ich bitte verzweifelt um Hilfe ?( Ich kanns einfach nicht begreifen wo das Problem liegt.
    Achja, diese ''jumps'' variable wird beim Creation Event auf true gesetzt, damit der am Anfang springen darf.
    HILFE!!!! Danke fürs lesen!

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

  • So,hab´s behoben war eigentlich ziemlich einfach.

    Du hast diese beiden Codes vertauscht.

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up))
    2. {jumps = false;}
    3. if (keyboard_check_released(vk_up))
    4. {jumps = true;}


    Richtig ist es so:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up))
    2. {jumps = true;}
    3. if (keyboard_check_released(vk_up))
    4. {jumps = false;}


    Hier die verbesserte Version: materialordner.de/XVFWezJT778Mg49B1ztgiTow6jDyfWj2.html
  • Vielen Dank für die Bemühungen!
    Leider glaub ich, dass ihr mein Problem nicht ganz versteht... ich habs nicht so klar formuliert, geb ich zu.

    Also, der Spieler soll eben NICHT rumhüpfen wie ein Kannickel wenn die Sprungtaste gedrückt gehalten wird! Du solltest nur einmal springen, dann erst wieder springen können wenn du löslässt, und erneut auf die Sprungtaste drückst.
    Du sollst nicht alleine durch gedrückt halten der Sprungtaste kontinuierlich wieder und wieder springen dürfen.

    Nur ein Sprung, egal wie lange man gedrückt hält, es zählt nur für ein Sprung, sobald man loslässt, springt die Variable von false auf true, so kann er beim erneuten drücken wieder springen.
    ABER NICHT rumhüpfen durch alleiniges gedrückt Halten, das darf nicht passieren! (Hast du deine ''verbesserte'' Version getestet? Ja, er springt jetzt, aber es kommt wieder auf das ursprüngliche Problem : Er springt wieder und wieder und wieder obwohl man einfach gedrückt hält, das darf nicht passieren.

    Entschuldige, dass ich das Problem nicht deutlich genug geschildert habe! Dx :headtouch:
    Ich war so froh zu lesen ''Habs behoben'' Dx aber...
    ;( Brauch unbedingt Hilfe, diese Sache killt mich
  • Tobi97 schrieb:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up) && in_air = false){
    2. vspeed = -12;
    3. }


    Wie wär's so? :P

    Edit: dein "in_air = false" vergessen ^^
    xDD OMG
    LOL
    was?? Ich dachte erst so... wow, er macht sich über mich lustig? =(
    Und dann, probier ich es aus, nur um ach was weiß ich, und dann OMG, PRESSED, DER GUCKT DANACH NUR, omg
    und dann, wtf xD ich kann nicht glauben, wie einfach dieses Problem gelöst werden kann
    Mit einem Smiley und ''Wie wär's so?'' xD wow...

    Danke! Danke danke danke xD! :rolleyes: Das war schon immer mein Fehler in Mathe arbeiten, einfach zu kompliziert gedacht, und die simplen fundamentalen mathematischen Elemente untergraben xD Danke!! Wooow...