Epic: Hintergrundobjekte
Ein Hintergrundobjekt funktioniert ähnlich zum Stachelfeind. Der Unterschied ist lediglich, dass keine Interaktion mit Objekten der Spieler-Klasse stattfindet und die Hintergrundobjekte vielleicht in unterschiedlichen Abständen voneinander erscheinen sollen.
Mit dem folgenden Quelltext werden einem Objekte verschiedene Kostüme hinzugefügt und anschließend eins zufällig ausgewählt.
this.addCostume("kaktus", "assets/grafiken/cactus.png");
this.addCostume("grass1", "assets/grafiken/grass1.png");
this.addCostume("pilz-braun", "assets/grafiken/mushroom_brown.png");
this.addCostume("pilz-rot", "assets/grafiken/mushroom_red.png");
// wähle ein zufälliges Kostüm
for (int i = 0; i < this.pickRandom(0, 4); i++) {
this.nextCostume();
}
Jede Plattform könnte ein neues Attribut deko
bekommen, welches vom Datentyp HintergrundObjekt
ist. Um das Objekt an die Plattform zu "binden", müssen wir zwei Sachen implementieren.
- Wenn ein Objekt der Klasse-Plattform der Stage hinzugefügt wird, dann soll auch ein Objekt der Klasse-Deko erstellt werden.
// Diese Methode wird aufgerufen, wenn ein Sprite-Objekt einer Stage hinzugefügt wird.
public void addedToStage(Stage stage) {
super.addedToStage(stage);
deko = new HintergrundObjekt();
// Die Deko soll nicht immer in der Mitte der Plattform sein,
// daher generieren wir eine Zufallszahl.
// Da die Deko auch nicht direkt am Rand der Plattform sein soll,
// lassen wird am Anfang und am Ende einen Puffer von 20 Pixeln.
dekoOffset = this.pickRandom(-this.getWidth() / 2 + 20, this.getWidth() / 2 - 20);
stage.add(deko);
}
- Muss die Position der Deko immer verändert werden, wenn sich die Position der Plattform ändert.
deko.setY(this.getY() - this.getHeight() / 2 - deko.getHeight() / 2);
deko.setX(this.getX());