Bugs tut sich weh
Der Stachelfeind und Bugs interagieren im Moment noch nicht. Das wollen wir ändern.
Die Scratch for Java Bibliothek stellt Möglichkeiten bereit, um eine Kollisionsabfrage zu realisieren.
Eine erste Kollisionsabfrage
Mit der Methode this.isTouchingSprite(einSprite)
kann überprüft werden, ob das aktuelle Objekt ein anderes Objekt berührt.
Wir wollen im Folgenden den nachfolgenden Pseudocode umsetzen.
Wenn ein Stachelfeind den Spieler berührt, dann
verletzt sich der Spieler
Wenn der Spieler verletzt ist, dann
ändert sich sein Kostum
und er kann sich nicht mehr bewegen
Aufgaben
- Modifiziere die Klasse
StachelFeind
so, dass einStachelFeind
das Spieler-Objektbugs
kennt. Füge dazu ein Attribut vom DatentypSpieler
der KlasseStachelFeind
hinzu und verändere den Konstruktor der KlasseStachelFeind
so, dass das Attribut belegt wird. - Modifiziere die Methode
run()
der KlasseStachelFeind
so, dass überprüft wird, ob ein StachelFeind den Spieler berührt (isTouchingSprite
). Wenn dies der Fall ist, soll dieverletzten()
-Methode der Spieler-Klasse aufgerufen werden. - Implementiere die
verletzten
-Methode der KlasseSpieler
Verfeinerung der Kollisionsabfrage
Jedes Sprite-Objekt hat eine Hitbox. Wenn du den Debug-Modus aktivierst setDebug(true)
, dann kannst du die Hitboxen sehen. Manchmal passen die Hitboxen nicht so gut zum Kostüm des Sprites. Mit der Methode setHitbox
können wir die Hitbox anpassen.
setHitbox
bekommt eine beliebige Anzahl an Koordinaten der folgenden Form: setHitbox(x1, y1, x2, y2, x3, y3, ...)
. Diese Koordinaten sind relative zu der linken oberen Ecke. Sie verwenden der Reihe nach verarbeitet und Bilden ein Polygon (Vieleck).
Aufgaben
- Modifiziere die Hitbox des Stachelfeinds so, dass diese besser zu seinem Kostüm passt.
- Modifiziere die Hitbox des Spielers so, dass diese besser zu seinem Kostüm passt.