Horizontaler Sprung

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

  • Horizontaler Sprung

    Neu

    Abend!

    Vergebens versuche ich einen Sprung zur Seite, wie in bspw. "Hurdler" zu bewerkstelligen.
    Sprich, die Spielfigur soll nach rechts springen um größere Distanzen überwinden zu können. Die Spielfigur ist wie in erwähntem Spiel bereits am rennen.
    Zudem wirken die Sprünge bei mir nicht lebhaft genug. In Wirklichkeit würde man, bevor man springt, eine kurze Zeit auf der Stelle stehen um für den Sprung auszuholen.
    Wie könnte man das umsetzen?

    Folgenden Code habe ich bisher, was die Fortbewegung angeht.
    Mir ist klar, dass das ganze nicht besonders gut geschrieben ist.
    Ich hab gewisse Vorstellungen wie das Spiel zu sein hat aber das programmieren liegt mir einfach nicht.

    GML-Quellcode

    1. //define keys
    2. jump_high = keyboard_check_pressed(vk_up);
    3. jump_low = keyboard_check_pressed(vk_down);
    4. jump_long = keyboard_check_pressed(vk_right);
    5. //define jump height
    6. if(jump_high) {jump_height = 8}
    7. if(jump_low) {jump_height = 6}
    8. vsp = vsp+grv;
    9. hsp = 2;
    10. //vertical collision high
    11. if(place_meeting(x,y+1,obj_walls)) and jump_high {
    12. vsp = -jump_height;
    13. }
    14. //vertical collision low
    15. if(place_meeting(x,y+1,obj_walls)) and jump_low {
    16. vsp = -jump_height;
    17. }
    18. //stop vertical movement if colliding
    19. if(place_meeting(x,y+vsp,obj_walls)) {
    20. while(!place_meeting(x,y+sign(vsp),obj_walls)) {
    21. y = y+sign(vsp);
    22. }
    23. vsp = 0;
    24. }
    25. //spread blood if colliding with walls
    26. if(place_meeting(x+hsp,y,obj_walls)) {
    27. repeat (20) instance_create_depth(x,y,-10,obj_blood);
    28. hsp = 0;
    29. global.dead = true;
    30. instance_destroy();
    31. }
    32. //set timer before run
    33. if(timer_active = true) {
    34. timer -= 1;
    35. if(timer == 0) {
    36. timer = room_speed * 1.5;
    37. can_walk = true;
    38. timer_active = false;
    39. instance_deactivate_object(obj_timer);
    40. }
    41. }
    42. //actually jump if run starts
    43. if(can_walk) = true {
    44. y = y + vsp;
    45. x = x + hsp;
    46. }
    Alles anzeigen
  • Neu

    Hi,wenn du noch nicht im Tutorialbereich geschaut hast, schau dort mal nach. Vielleicht findest du dort etwas.
    Ich werde mir deinen Code später mal nehmen, testen und anschauen. Vielleicht kann ich dir dann besser helfen.
    Was genau ist denn dein Problem beim horizontal Springen? Du meintest es sieht nicht gut aus?
  • Neu

    icqgamer schrieb:

    Hi,wenn du noch nicht im Tutorialbereich geschaut hast, schau dort mal nach. Vielleicht findest du dort etwas.
    Danke für den Tipp. Leider habe ich nicht wirklich viel Zeit um mir alles anzusehen. Meine Stärken liegen eher beim akustischen sowie visuellen Aspekt des Spiels.
    Das programmieren ist eben so eine Nebensache die getan werden muss damit es läuft.

    icqgamer schrieb:

    Ich werde mir deinen Code später mal nehmen, testen und anschauen. Vielleicht kann ich dir dann besser helfen.
    Das wäre Spitze! Allerdings sind da ein paar Variablen drin, welche in anderen Events definiert sind.

    icqgamer schrieb:

    Was genau ist denn dein Problem beim horizontal Springen? Du meintest es sieht nicht gut aus?
    Naja also generell möchte ich, dass meine Spielfigur drei versch. Arten von Sprüngen beherrscht.
    Vertikal in zwei versch. Höhen, welche durch die obere und untere Pfeiltaste getätigt werden können.
    Sowie Horizontal bzw. nach rechts und leicht nach oben, sodass die Spielfigur quasi einen großen Satz nach rechts macht. Etwa wie ein Weitsprung.
    Zudem sieht es seltsam aus, wenn mein Figürchen hüpft, ohne eine kurze Pause vor dem Springen einzulegen.
    Es ist etwas schwierig das zu beschreiben. Am besten schaust du dir mal das Beispiel an, welches ich oben erwähnt habe.
    Die gesamte Bewegungs-Mechanik möchte ich in etwa kopieren, da sie gut in mein Spiel passen würde.
  • Neu

    Hi, hab leider derzeit keine Zeit, aber was Dir eindeutig fehlt, ist Schwerkraft(gravity),
    damit schon mal das Fallen natürlicher aussieht.
    Bez. der Pause, kannst Du das mit Timer oder Variable lösen, würde aber für den Spieler
    wie Microruckler aussehen, daher bleibt Dir nur übrig, eine Animation dafür zu zeichnen,
    wo sich Deine Figur etwas nach unten beugt und zum Sprung ansetzt(Spiel: Flashback).

    Hier noch ein paar Tutorials, weil Du doch der akustische Typ bist :) :

    Platformer for Beginner


    Platformer Advanced



    Miradur
  • Neu

    Miradur schrieb:

    Hi, hab leider derzeit keine Zeit, aber was Dir eindeutig fehlt, ist Schwerkraft(gravity),
    damit schon mal das Fallen natürlicher aussieht.
    Bez. der Pause, kannst Du das mit Timer oder Variable lösen, würde aber für den Spieler
    wie Microruckler aussehen, daher bleibt Dir nur übrig, eine Animation dafür zu zeichnen,
    wo sich Deine Figur etwas nach unten beugt und zum Sprung ansetzt(Spiel: Flashback).

    Hier noch ein paar Tutorials, weil Du doch der akustische Typ bist :) :

    Platformer for Beginner


    Platformer Advanced



    Miradur
    Danke für deine Antwort. Eigentlich stammt mein Code ziemlich genau aus dem "Platformer Advanced" Tutorial. Also gravity oder ähnliches fehlt nicht. Ist eben in einem anderen Event definiert.
    Meine Spielfigur bewegt sich eigentlich ganz ok, nur weiß ich nicht wie ich jetzt den horizontalen Sprung umsetzen soll.

    Was die Animation betrifft scheinst du wohl richtig zu liegen. Ich versuche es damit später aber erstmal müssen die Funktionen geschrieben sein.
  • Neu

    Das mit der Absprunganimation würd ich mir gründlich überlegen.

    Spiele die das Nutzen, wie Flashback, das erste Prince of Persia oder Abe's Oddyse haben eines gemeinsam. Es sind keine Platformer im Sinne eines Super Marios oder Mega Mans. Das laufen und springen fühlt sich dort aufgrund der Übergangsanimationen immer sehr schwergängig und zeitverzögert an. Sieht toll aus, fühlt sich aber schlecht an. Macht bei den Spielen aber auch wenig aus, da es dort mehr ums Rätsel lösen und weniger geschicktes und schnelles vorankommen geht. Wenn du ein Spiel in diese Richtung machen willst, kannst du die Übergangsanimationen einbauen.

    Ansonsten ist es besser Aktionen direkt mit Knopfdruck auch auszuführen.

    Für das seitliche Springen müsstest du neben dem Sprung (vsp=-jump_height) auch hsp auf einen höheren wert als durch normales laufen setzen.
  • Neu

    Gamedesigntechnisch vllt zwei Punkte:

    ich stimme @TrunX zu; absprunganimationen sind schwierig. Du kannst aber die Kamera weiter bewegen lassen, dann sieht das ganz dynamischer aus, und da der character dann die Kamera einholt hat es noch ein bissl mehr umpf.

    Du kannst die Sprünge auch unberechnet ausführen lassen, wenn du weißt das du wieder auf der selben höhe landen wirst. Dafür kannst du Pfade benutzen. Dann wird dein Character immer 64px weit und 32px hoch springen ohne, dass du dafür erst die richtige balance aus hspd, vspd und gravity finden musst.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)