Bugs lernt springen
Das Ziel
Leertaste drücken, Bugs springt – und fällt wieder herunter. Dazu bewegt er beim Laufen die Beine.
So sieht das aus
Klick in den Übungsbereich und drück die Leertaste.
Wie es gemacht ist
Die Animation
Spieler ist jetzt ein AnimatedSprite. Eine Animation ist eine Reihe von Bildern,
die abwechselnd gezeigt werden:
this.addAnimation("gehen", "bunny1_walk%d", 2);
Das %d wird durch die Nummer des Einzelbildes ersetzt, beginnend bei 1. Geladen
werden also bunny1_walk1 und bunny1_walk2. setAnimationInterval(120) legt fest,
dass alle 120 Millisekunden weitergeschaltet wird.
Der Sprung
Ein Sprung ist keine feste Kurve, sondern das Ergebnis von zwei Regeln:
this.changeY(steiggeschwindigkeit);
steiggeschwindigkeit = steiggeschwindigkeit - 0.5;
Bugs bewegt sich um seine aktuelle Steiggeschwindigkeit nach oben – und die wird in jedem Bild ein bisschen kleiner. Erst steigt er schnell, dann langsamer, dann wird die Zahl negativ und er fällt. Das ist Schwerkraft, in zwei Zeilen.
amBoden ist ein Attribut vom Typ boolean: Es merkt sich, ob Bugs gerade steht
oder in der Luft ist. Ohne dieses Merkmal könnte man mitten im Sprung noch einmal
springen – ein Fehler, den fast jedes selbstgebaute Jump-and-Run einmal hatte.
Deine Aufgabe
a) Spring ein paar Mal. Kannst du in der Luft ein zweites Mal springen?
b) Ändere die Sprungkraft von 9 auf 15 und auf 4. Was ändert sich?
c) Ändere die Schwerkraft von 0.5 auf 0.2 und auf 1.5. Beschreib in einem Satz, wie sich der Sprung anfühlt.
d) Bau einen doppelten Sprung ein: In der Luft soll einmal nachgesprungen werden dürfen.
Tipp 1: Doppelsprung, erster Schritt
Du brauchst dir zu merken, wie viele Sprünge seit dem letzten Bodenkontakt schon
verbraucht sind. Ein int-Attribut reicht:
private int spruenge = 0;
Tipp 2: Doppelsprung, zweiter Schritt
Statt amBoden fragst du spruenge < 2. Beim Landen setzt du spruenge = 0, beim
Abspringen erhöhst du um eins.
Achtung: isKeyPressed ist wahr, solange die Taste unten ist. Für den zweiten
Sprung muss die Spielerin die Taste also loslassen und neu drücken – sonst sind beide
Sprünge im selben Moment verbraucht. Merk dir dazu, ob die Taste im letzten Bild
schon gedrückt war.