2D-Plattformspielspringen

7

Ich schreibe gerade zum Spaß ein Spiel in XNA, das C # verwendet. Ich habe meine Sprites geladen und wenn sich der Charakter nach rechts bewegt, sieht er aus, als würde er nach rechts rennen, und wenn er sich nach links bewegt, sieht er aus, als würde er nach links rennen.

Ich habe überall nach einem guten Codierungsbeispiel gesucht, um eine Sprungfähigkeit zu erzeugen. Ich habe all die Physik-Sachen gelesen, die ich aushalten kann, und es hilft nichts, wenn ich nicht herausfinden kann, wie man die Leertaste zum Springen verwendet, aber ich kann sie nicht davon abhalten, den Weltraum zu nutzen. Springe einfach noch einmal, bis sie landen.

Bradley Kreuger
quelle

Antworten:

8

Erstellen Sie eine Variable, canJump und setzen Sie sie auf true, wenn sich Ihr Sprite auf einer überspringbaren Oberfläche befindet. Wenn Sie in jedem Frame eine negative y-Geschwindigkeit verwenden und die Kollisionserkennung verhindert, dass Sie durch den Boden fallen, können Sie canJump einstellen, wenn das Sprite des Spielers mit dem Gelände kollidiert. Immer wenn der Spieler springt, können Sie einfach auf false springen und dies bleibt so, bis die Kollisionserkennung es wieder ändert

Mike B.
quelle
3

Definieren Sie dies:

int gravity = 2, jump=50, spX=20,spY=20, surface=200;
bool click = false;
bool canJump = true;
Texture2D sprite;
MouseState m;

---Aktualisieren---

m = Mouse.GetState();

        if (spY < surface)
        {
            spY += gravity;
        }
        else
        {
            if (spY == surface)
            {
                canJump = true ;
            }
        }
        if (m.LeftButton == ButtonState.Pressed)
        {
            click = true;
        }
        if ((click) && (m.LeftButton == ButtonState.Released))
        {
            if (canJump)
            {
                click = false;
                spY -= jump;
                canJump = false;
            }
        }

--- EndUpdate ---

---Zeichnen---

spriteBatch.Draw(sprite,new Vector2(spX,spY),Color.White);

--- EndDraw ---

Ich habe es gerade versucht, es funktioniert gut

Zukki
quelle
2

Schauen Sie sich dieses Tutorial an: http://www.xnadevelopment.com/tutorials/thewizardjumping/thewizardjumping.shtml Die Website enthält auch viele wirklich nützliche Tutorials zu XNA.

Jesse Emond
quelle
XNADevelopment ist eine großartige Seite.
Die kommunistische Ente
Vielen Dank, dass die Website tatsächlich das war, wonach ich gesucht habe. Jetzt, wo ich ein Verständnis habe und es so funktioniert, wie ich es will, kann ich mit der Schwerkraft umgehen und was nicht.
Bradley Kreuger
0

Was ich in der Vergangenheit getan habe, ist, dass dein Charakter eine Geschwindigkeit in jede Richtung hält. Wenn ich einen Sprung will, sage ich einfach vel_y - = (Sprunggeschwindigkeit hier). Und natürlich habe ich eine konstante Schwerkraft.

Eine weitere wirklich nette Funktion, die Sie sich bei der Implementierung ansehen sollten, ist das gesamte Konzept: "Je länger Sie die Taste gedrückt halten, desto höher sind Sie". Ich hasse es, wenn Spiele nur eine einzige konstante Variable überspringen und mir kein Gefühl der Kontrolle erlauben.

Oh, und Wandsprünge sind cool =]

Ultifinitus
quelle