Wieso springt er falsch?

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

  • Wieso springt er falsch?

    Hallo.

    Ich kapiere eines nicht.

    Bin grad dabei ein Jump 'n' Run zu machen.

    Nach links und rechts bewegen ist kein Problem, auch das Sprite habe ich locker entworfen, ich kann auch problemlos Objekte und Backgrounds entwerfen.
    Aber das mit dem hüpfen klappt irgendwie nicht.

    Seit ca. 2 Tagen suche ich nach Möglichkeiten, probiere Tutorials aus, habe sogar eine Hilfe mit allen Erklärungen, dennoch schaffe ich es nicht, wieso ist der Sprung so schwer?

    Also, es ist ein Testprojekt, danach will ich erst richtig anfangen.
    Ich erkläre was ich alles gemacht habe, wäre nett wenn jemand erklären könnte was ich falsch mache.

    Als Sprite habe ich eine Schnecke gemacht.
    Dazu ein Backgroundbild auf welchem ich die Schnecke rechts positioniert habe und unterhalb der Schnecke, über die gesamte Fläche verteilt, Bodenblöcke (alle solid).

    Keypress Left habe ich Links eingegeben, Geschwindigkeit 1, nicht relativ, soll ja nicht zunehmen.
    Keypress Right dasselbe, nur halt in die andere Richtung.


    Keypress Up

    (x 0, y 1, relative und not angehakt)

    Speed 2, nicht relativ

    direction 0, gravity 2


    Die Figur bekommt später noch einen weiteren Sprite, aber das kann ich selbst.

    Mein problem.
    Die Schnecke springt nicht, sie fliegt nach rechts, durch den Bodendurch, leicht schräg nach unten, was mache ich falsch?
  • Original von OwenJackson
    Ich habe jetzt Vspeed auf -2 gesetzt, jetzt springt sie auch nach oben.

    Wie soll ich das mit der Gravitation machen.
    Ich habe unter der einen Gravitation noch eines gesetzt, aber jetzt springt die Schnecke nach oben und bleibt am höchsten punkt.
    Das hört sich eher danach an als hättest du die "friction" also Reibung, und nicht Gravitation verwendet.
    Die Reibung verlangsamt jegliche Bewegung um einen bestimmten Wert pro Step, die Gravitation hingegen fügt eine Bewegung in eine bestimmte Richtung hinzu (für gewöhnlich in die Richung unten), sollte also die ursprüngliche Bewegung nach oben gehen, wird die Gravitation dieser gegenlenken, und Step für Step diese langsam in eine Bewegung nach unten umwandeln.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Sprich ich muss bei Direction die richtige Richtung eingeben?
    Hab ich grad mal ausprobiert, bei -100 geht er nach unten (das heisst durch den Boden, aber der ist doch Solid).

    Bei -10 geht er zwar wieder nach unten, springt aber so schnell nach rechts das er aus dem Bildschirm rausspringt.


    --------
    Edit:

    Hab jetzt mal Gravitation auf 1 gesetzt und Direction auf -90.

    Jetzt springt er genau nach unten, wie ich will, aber er geht durch den Boden, obwohl der Boden solid ist.
    Was kann ich da machen?

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

  • Original von OwenJackson
    Sprich ich muss bei Direction die richtige Richtung eingeben?
    Hab ich grad mal ausprobiert, bei -100 geht er nach unten (das heisst durch den Boden, aber der ist doch Solid).

    Bei -10 geht er zwar wieder nach unten, springt aber so schnell nach rechts das er aus dem Bildschirm rausspringt.

    Hättest du in der Hilfe nachgelesen wüsstest du:
    Rechts = 0 / 360°
    Oben = 90°
    Links = 180°
    Unten = 270°


    Original von OwenJackson
    --------
    Edit:

    Hab jetzt mal Gravitation auf 1 gesetzt und Direction auf -90.

    Jetzt springt er genau nach unten, wie ich will, aber er geht durch den Boden, obwohl der Boden solid ist.
    Was kann ich da machen?


    Original von TrunX
    Und sobald er den Boden berührt die Gravitation wieder auf 0 setzen.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Das weiss ich ja jetzt.

    Das Problem ist, er springt durch den Boden.
    Soweit ich verstanden habe muss ich den Boden solid machen, damit die Figur nicht durchgeht, aber egal ob ich bei der Schnecke solid angehakt habe oder nicht, sie springt durch.
    ----------------
    Edit:
    Ich habe mal Move to contact position eingegeben wenn der Block und die Schnecke sich treffen.

    Aber dann kann ich sie irgendwie nicht mehr nach links und rechts bewegen. ?(

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

  • Bei der Kollision mit dem Boden musst du vspeed=0 und gravity=0 setzen (die Richtung der gravity kannst du bei 270 lassen).
    Am besten schaust du dir das Jump&Run Tutorial auf der yoyogames Website an, da wird alles schön einfach erklärt. Das ist für Änfänger genau das richtige.

    Dragoon
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Ich schätze mal du hast den vspeed auch nicht auf 0 gestellt, oder?

    Btw: Hast du wirklich mal nach deinem Problem gesucht?
    Wir haben nicht nur jede Menge Fragen-Threads, die sich mit sehr ähnlichen Problemem beschäftigen.
    Sogar so viele, dass es schon so einige Tutorials dazu gibt.
    Und vorgefertigte Jump & Rund Engines, zum Auseinandernehmen und verstehen ebenso:
    gm-d.de/board/jgs_db.php?action=show&eintrags_id=221&sid=
    gm-d.de/board/jgs_db.php?action=show&eintrags_id=216&sid=
    gm-d.de/board/jgs_db.php?action=show&eintrags_id=125&sid=
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Ich hab sogar eines mit Jump 'n' Run (von Yoyogames) genommen.
    Hab alles genauso gemacht wie dort, dort funktioniert es, bei mir aber nicht.


    Das verstehe ich wiederrum nicht.

    Wieso funktioniert bei meiner Figur etwas nicht, was bei dem anderen problemlos geht, trotz gleichem Aufbau?
  • Das liegt daran, dass der Aufbau halt doch nicht gleich ist. Du musst auch die Wände und Leitern gleich übernehmen wenn es funktionieren soll. Mehr kann man dazu nicht sagen, nochmal vergleichen, oder gleich das Tutorial abändern.

    Dragoon
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!