Springen ist nicht richtig möglich?

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

  • Springen ist nicht richtig möglich?

    Guten Tag,
    ich weiß nicht genau wie ich Anfangen soll.

    Ich hatte eine Idee für ein Jump and Run dafür habe ich erstmal einen Basic Code geschrieben (Unten Drunter habe ich den Code [Nur Step] ganz kurz zusammengefasst)
    Nichts besonders, aber es funktioniert.

    Jetzt habe ich ein Problem wo ich keine Lösung für finde,
    wenn ich um das "if Sprung" ein weiteres if(mit true/false) setzte.
    Womit bei false der Sprung nicht ausgeführt wird aber sobald der das if wieder auf true gesetzt wird springt er trotzdem nicht.
    Ich muss mich kurz wieder hin und her bewegen dann funktioniert es wieder.

    Ich habe es bei if Links und if Rechts mit dem zusätzlichen if getestet bei beiden funktioniert es.


    Habt ihr eine Idee? Ich weiß nichts mehr :(

    Gruß
    Lukas

    * Ich habe es auch mit if Sprung && der Bedienung versucht gleiches Ergebnis ich kann einfach nicht springen.



    GML-Quellcode

    1. if (Sprung)
    2. {
    3. JSpeed = -SprungFall;
    4. }
    5. }
    6. else
    7. {
    8. if JSpeed < 3
    9. {
    10. JSpeed += Fall;
    11. }
    12. }
    13. if Links
    14. {
    15. LRSpeed = -Speed;
    16. }
    17. if Rechts
    18. {
    19. LRSpeed = Speed;
    20. }
    Alles anzeigen
  • Hallo @LukasJ, willkommen im Form :)

    Kannst du noch etwas mehr vom Step Event posten?

    Liebe Grüße
    Husi
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Also viel ist das ja wirklich nicht, was da noch kommt. Ich habe es jetzt mal aus meinem Kopf vervollständigt entschuldigt kleinere Schreibfehler.
    Das Problem ist wie oben genannt mit dem KontrollCheck.





    GML-Quellcode

    1. if KontrollCheck = true
    2. {
    3. if place_meeting(x,y+1, Bode)
    4. {
    5. if (Sprung)
    6. {JSpeed = -SprungFall;
    7. }
    8. }
    9. else
    10. {
    11. if JSpeed < 3
    12. {
    13. JSpeed += Fall;
    14. }
    15. }
    16. if Links
    17. {
    18. LRSpeed = -Speed;
    19. }
    20. if Rechts
    21. {
    22. LRSpeed = Speed;
    23. }
    24. if place_meeting(x+LRSpeed, y, Bode)
    25. {
    26. while !place_meeting(x+sign(LRSpeed), y, Boden)
    27. {
    28. x += sign(LRSpeed);
    29. }
    30. LPSpeed = 0;
    31. }
    32. x = LRSpeed;
    33. if place_meeting(x, y+JSpeed , Bode)
    34. {
    35. while !place_meeting(x, y+sign(JSpeed), Boden)
    36. {
    37. y += sign(JSpeed);
    38. }
    39. JSpeed = 0;
    40. }
    41. y += JSpeed;
    42. }
    Alles anzeigen
  • 2 Sachen vorab:

    Ist "Bode" richtig oder sollte das Boden heißen?
    Es hat zwar keinen Einfluss auf die Funktionstüchtigkeit, aber wenn du etwas gleichsetzen möchtest, dann verwendet man "=" und wenn du etwas vergleichen/abfragen willst, dann "==". (Ich beziehe mich auf if KontrollCheck = true)

    Zu deinem Problem:
    So wie du das Problem beschreibst, dass du dich erst hin- und herbewegen musst, hört es sich für mich so an, dass dein Objekt im Boden feststeckt und es nichts mit dem true/false zutun hat.
  • Nun, was Kollisionsangelegenheiten und alles mit dem Movement betrifft ist Game Maker etwas friemelig.
    Ehe die Kollision stattfindet ist dein Objekt bereits "angedockt" und steckt mit wenigen Pixeln im Boden fest, so würde ich es vermuten.
    Ich habe selber jetzt nicht so viel Erfahrung mit Platformer Sachen, da es mich immer genervt hat mich mit den Kollisionskram rumzuschlagen :D
    Da kann dir vielleicht jemand anders besser helfen als ich.

    Was man noch probieren könnte:
    - Kollisionsmasken anpassen (im Sprite)
    - Objekte auf solid stellen und dann Bounce Against solid objects. Ob das zielführend ist für dich ist eine andere Frage.