# 2D Spiel "Der Sprung"



## Svens (19. Okt 2014)

Hallo zusammen,

ich bin dabei ein 2D Jump'n Run Spiel zu programmieren. Eines der wichtigsten Elemente ist es ja, dabei springen zu können. Jedoch habe ich doch keine Idee, wie ich die implementieren kann und frage nun hier um Rat.

Ich habe schon einmal gesehen, dass machne eine neue Klasse für Sprung erstellt haben, damit der Sprung gleichzeitig mit dem Laufen agiert.

Ist es wirklich nötig, eine neue Klasse zu erstellen?

Wichtig ist mir dabei nur, dass ich während dem Laufen springen kann, um so z.B. über Blöcke zu hüpfen. Da würde es mir ja recht wenig nützen, wenn ich auf einer Stelle springe.

Ich hoffe ihr könnt mir dabei weiter helfen.


----------



## jeegeek (19. Okt 2014)

Nun ja ohne Code ist es scher zu sagen wie du es machen kannst. Schau dir doch mal dieses Video an, verstehe es und setze das ganze in Code um https://www.youtube.com/watch?v=5Vy2BQE1t3s

Es ist nicht wirklich schwer wenn man weiß wie man es machen kann


----------



## Svens (19. Okt 2014)

Wie der Sprung ablaufen soll, habe ich ja auch verstanden. Problem ist nur, dass ich beim Laufen springen möchte und nicht, dass der stehen bleibt.

Ich habe mir noch ein weiteres Tutorial durchgelesen und da stand was von einem Thread oder auch von Multithreading. Was ist das, was kann das und wie funktionert das? Kann mir da einer weiterhelfen?


----------



## Gucky (19. Okt 2014)

Ein Thread gewährt Nebenläufigkeit, was bedeutet, dass mehrere Aufgaben "gleichzeitig" ablaufen können.

Weitere Infos


----------



## jeegeek (20. Okt 2014)

Wie gesagt ohne Code ist es schwer zu helfen. Du benötigst aber keine Threads für so etwas. Du hast in deinem Spiel doch eine Hauptschleife die sich um die Spiellogik kümmert und du wirst bestimmt auch ein Spielerobjekt haben. Vermutlich wird dein Spielerobjekt auch eine Update Methode haben. Dort kannst du die Bewegung für den Sprung einbauen. Prüfe einfach ob das Objekt gerade springt wenn ja führe die Sprungbewegung weiter aus, wenn nicht dann eben nicht. Das beeinflusst dann die normale Bewegung nicht und auch wenn dein Spieler springt kann er sich noch bewegen....


----------



## Svens (20. Okt 2014)

ok. danke werde ich gleich mal ausprobieren.


----------



## Sogomn (21. Okt 2014)

Wie schon erwähnt, bietet es sich an, eine _Game-Loop_ zu haben, die alles berechnet und dann neu zeichnet.
Zudem bietet es sich an, neben der x- und y-Position des Spielers noch zwei Variablen für die x- und y-Geschwindigkeit zu haben.
Jedes mal, wenn die Spielschleife den Spieler "berechnet", addierst du zu seiner x- und y-Position die jeweilige Geschwindigkeit. Für einen Sprung setzt du die y-Geschwindigkeit dann einfach auf einen negativen Wert (man beachte die invertierte y-Achse in Java) und der Spieler macht einen Sprung.
Du solltest dann noch Gravitation und Reibung hinzufügen, es sei denn, du möchtest, dass der Spieler unendlich weiterläuft/-springt.


----------



## Gucky (21. Okt 2014)

Ich glaube, hier bieten sich Vektoren an, sodass der Sprung nur eine Beschleunigung nach oben ist. Die Pfeiltasten haben nur Einfluss auf die x-Komponente des Vekotrs und der Sprung auf die y-Komponente. Springst du, so wird in die y-Komponente bspw. eine 5 geschrieben. Die GameLoop nimmt diesen Wert, berechnet den Ort, wo der Spieler bis zur nächsten Berechnung sein muss und verändert dementsprechend die y-Komponente.


----------

