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
StachelFeindso, dass einStachelFeinddas Spieler-Objektbugskennt. Füge dazu ein Attribut vom DatentypSpielerder KlasseStachelFeindhinzu und verändere den Konstruktor der KlasseStachelFeindso, dass das Attribut belegt wird. - Modifiziere die Methode
run()der KlasseStachelFeindso, 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.
