Double Jump Problem

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

  • Double Jump Problem

    hy


    also ich habe einen double jump erstellt nur das problem ist das wenn er das obj box berührt die variable wieder auf 2 gesetzt wird..und ich will dasnicht. also er soll maximal 2 walljumps machen können...

    hier mein code dafür

    im create event hab ich walljump = 0 und walljumpmax = 2;

    step event

    GML-Quellcode

    1. if place_meeting(x+1,y,obj_box)or place_meeting(x-1,y,obj_box){
    2. walljump = walljumpmax;//Ich weiß er setzt es hier immer wieder auf 2 zurück aber wie kann ich das verhindern???
    3. }
    4. if keyboard_check_pressed(vk_up)&& (walljump > 0)&& (place_meeting(x+1,y,obj_box)or place_meeting(x-1,y,obj_box)){
    5. walljump -=1;
    6. vspeed = -jspd;
    7. }
    Alles anzeigen



    ich weiß ich könnte beim ersten code noch hinzufügen

    GML-Quellcode

    1. ​if (walljump != 2)&& (walljump !=1)


    aber dann hab ich noch immer das selbe problem weil er dann wenn walljump 0 ist und ich wieder an der box ne kollision hab dann wird es ja wieder auf 2 gesetzt.

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

  • Du musst dir im klaren sein, wann der Spieler seine Walljumps zurückgewinnen soll.
    Wenn er nach einer Berührung mit dem Boden wieder Wandsprünge ausführen darf, programmierst du einfach folgendes:

    Quellcode

    1. if (place_meeting(x,y+1,obj_box)) //ist der Spieler auf dem Boden?
    2. {
    3. walljump = walljumpmax;
    4. //hier sollte auch dein "Boden-Sprung" Code stehen
    5. }
    Twitter: @BytingGames
  • @iks deh

    das problem dabei ist ich hab genau diesen code hier

    GML-Quellcode

    1. if place_meeting(x,y+1,obj_solid)
    2. {
    3. jumps = jumpsmax;
    4. vspeed=-jspd;
    5. }


    für den doppelsprung deshalb habe ich auch obj box benutzt für den walljump weil ansonsten walljump auch immer wieder zurück gesetzt wird
    woow hab gerade deinen twitter account gesehn toll....wie hast du die light engine gemacht???und wie schaltest du das wireframe ein und aus??

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

  • Kann es sein, dass die folgende Abfrage wahr ist wenn du seitlich an eine box springst um einen Walljump auszuführen:

    GML-Quellcode

    1. if (place_meeting(x, y + 1, obj_box))
    2. {
    3. //sicher, dass das nur auf dem Boden ausgeführt wird?
    4. }


    Es könnte nämlich sein, dass dein Spieler sich in die Wand hineinbewegt und somit denkt er wäre auf dem Boden. Der Spieler muss vor der Wand anhalten, damit keine Kollision entsteht.

    Worin liegt denn der Unterschied zwischen obj_solid und obj_box?
    Soll der Spieler keinen Wandsprung an obj_solid machen können...?
    Sonst würde es auch ausreichen beide Objekte zusammenzufassen.

    Am besten schickst du entweder mehr Code oder beschreibst dein Problem ausführlicher ;)

    Spoiler anzeigen

    Die light engine basiert darauf, dass jedes Objekt aus Polygonen besteht, diese werden dann aus der Perspektive des Lichts in die länge gezogen und dann in Schwarz als Schatten über die Lichtquelle (Textur) gelegt.
    Beim Wireframe werden einfach nur die Kanten der Schatten gezeichnet.
    Das ganze ist mit C# programmiert, also wird eine nähere Erläuterung wahrscheinlich wenig Sinn machen, sonst schreib mir ne PN wenn du mehr wissen willst.
    Twitter: @BytingGames
  • nein weil ich ja bei diesem code

    GML-Quellcode

    1. ​if place_meeting(x,y+1,obj_box)
    2. {
    3. //code
    4. }


    nicht obj box sondern obj solid habe......


    nein......obj solid ist nur der boden und für den doppelsprung........und obj box ist für den walljump und die wand....


    also der code oben im post 1 ist alles was man braucht...weil er ist genau der selbe code nur das das objekt gewechselt wird und beim walljump x+1 und x-1 und obj box verwendet wird und beim doppelsprung obj solid und y+1
  • Dann halt so...?

    GML-Quellcode

    1. if (place_meeting(x, y + 1, obj_solid))
    2. {
    3. //Auf dem Boden
    4. walljump = walljumpmax;
    5. jumps = jumpsmax;
    6. if (keyboard_check_pressed(vk_up))
    7. {
    8. vspeed = -jspd;
    9. }
    10. }
    11. else if (keyboard_check_pressed(vk_up) && jumps > 0)
    12. {
    13. jumps--;
    14. vspeed = -jspd;
    15. }
    16. if (keyboard_check_pressed(vk_up) && (walljump > 0) && (place_meeting(x+1,y,obj_box) or place_meeting(x-1,y,obj_box)))
    17. {
    18. //An der Wand + <up>
    19. walljump--;
    20. vspeed = -jspd;
    21. }
    Alles anzeigen
    Twitter: @BytingGames