Mann soll zwischen 2 Leveln wechseln können, welche beinah gleich aufgebaut sind, aber ein Hinderniss verschoben ist, so das man nur durch dieses Wechseln zum Ziel kommt.
Jedoch wird die variable, welche für die Spieler Position zuständig ist immer wieder zurückgesetzt, sobald man in ein neues Level kommt.
Ich möchte bei addedToWorld und setLocation(xOld,yOld); die Werte von dem alten Level einfügen, jedoch werden sie zu beginn immer auf 0 gesetzt.
Was auch gehen würde, wäre den Spieler (Player) beim positionieren in die Welt auf die richtigen Koordinaten zu setzen, leider weiß ich ebenfalls nicht wie.
public void addedToWorld(World world) { if(!(getWorld() instanceof Level6)) { startPosition(); //auf Anfangsposition setzen, geschieht zu Beginn jedes Levels } else { setLocation(xOld,yOld); } }
public void act() { if (Greenfoot.isKeyDown("left")||Greenfoot.isKeyDown("a")){ setLocation(getX()-step,getY()); //einen schritt nach links bewegen } if (Greenfoot.isKeyDown("right")||Greenfoot.isKeyDown("d")){ setLocation(getX()+step,getY()); //einen schritt nach rechts bewegen } if (getWorld() instanceof Level5 && Greenfoot.isKeyDown("Space") && afr == true) {//wenn die Aktuelle Welt eine Level2 ist xOld = getX(); yOld = getY(); nextLevel(); }
public void nextLevel() { if (getWorld() instanceof Level5) {//wenn die Aktuelle Welt eine Level2 ist Greenfoot.setWorld(new Level6()); //mache sie zu einer Level3-Welt } }