Java 2D Jump'n'Run - Sprunganimation / Doppelsprung
Hallo, ich arbeite derzeit an einem Jump'n'Run-Game. Es läuft auch ganz gut, der Sprung an sich sieht gut aus. Wenn man allerdings die Leertaste gedrückt hält, wird die Methode "gespamt" und der Character fliegt mehrere 100 "Einheiten" nach oben. Ich könnte natürlich eine Boolean ready nutzen, allerdings würde dabei die Doppelsprungfunktion verloren gehen. Hier die Sprungfunktion:
(charY ist der y-Wert des Characters; speedY ist die Geschwindigkeit in y-Richtung (speedY liegt am Anfang bei -14, sodass der Character nach oben fliegt); oldCharY ist der y-Wert des Characters vor dem Sprung)
private void performJump()
{
charY += speedY;
speedY++;
// System.out.println(charY);
if (charY > oldCharY)
{
charY = oldCharY;
speedY = 0;
}
}
Die Abspielgeschwindigkeit ist durch Thread.sleep() geregelt. Hoffe ihr könnt mir helfen :)
Danke im Voraus, Günter.
2 Antworten
Mach doch nen int für jumpCounts und einen für maxCounts. Wenn du auf dem Boden bist, wird jumpCounts auf 0 gesetzt. Bei jeder Sprungtastenbetätigung wird dieser um 1 erhöht, bis maxCounts erreicht ist. bei maxCounts = 1 könntest du dann einmal springen, bei 2 dann Doppelsprung usw.
int jumpCounts = 0;
int maxCounts = 2;
private void performJump()
{
if (jumpCounts >= maxCounts)
return; //Abbruch des Sprunges
jumpCounts++;
charY += speedY;
speedY++;
// System.out.println(charY);
if (charY > oldCharY)
{
charY = oldCharY;
speedY = 0;
//Ich nehme mal an, dass das hier das Ende des Sprunges ist
jumpCount = 0;
}
}
Probier das mal aus!
Du möchtest keinen boolean? Dann nimm einen Integer, der raufzählt: wenn du drückst geht es auf z.b. 1, wenn du nochmal drückst auf 2, dann aber nicht höher. Wenn du landest geht er wieder auf 0.