Frage von 321abca, 58

Wie kann man eine schräge Steuerung in Greenfoot progammieren (Auto soll schräg fahren)?

Ich möchte ein Spiel in Greenfoot progammieren. Es geht grob gesagt ums Einparken mit einem Auto. Die Steuerung beinhaltet (also wurde schon programmiert) das rechts, links, nach oben und nach unten fahren. Jedoch habe ich ein Problem, da ich auch schräg fahren möchte.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Borgler94, 44

kannst du bitte deinen Code herzeigen?

(bitte mit der <>(Code) funktion von gutefrage)

Kommentar von 321abca ,
public class Spieler_Auto extends Actor

{

public void act()
{
if(Greenfoot.isKeyDown("right"))

{
this.moveRight();
}

if(Greenfoot.isKeyDown("left"))
{
this.moveLeft();
}


if(Greenfoot.isKeyDown("up"))
{
this.moveUp();
}

if(Greenfoot.isKeyDown("down"))

{
this.moveDown();
}

}


public void moveRight()

{
this.setLocation(this.getX()+5, this.getY());
}

public void moveLeft()

{
setLocation(this.getX()-5, this.getY());
}

public void moveUp()

{
this.setLocation(getX(), getY() - 5);
}

public void moveDown()

{
this.setLocation(getX(), getY() + 5);
}

}
Kommentar von 321abca ,

Hoffe ist verständlich so mit der Einrückung

Kommentar von Borgler94 ,

sobald der zweite key gedrückt wird, wird der erste sozusagen "ausgeschaltet"

daher ist ein umweg notwendig

mach dir am Anfang von act() für jeden Button einen boolean z.B. keyRight = false

dann in den if abfragen statt sofort this.moveRight() 
setzt du keyRight auf true   ( das natürlich für alle richtungen)

und dann fragst du ab

if( keyRight==true && keyUp==true ) {
   this.moveUpRight);
}
else if(key Right==true && keyDown==true){
   this.moveDownRight();
}
...dasselbe mit left...
else if (keyRight == true){
   this.moveRight();
}
... wieder mit allen Richtungen

falls du es nicht hinbekommst bzw. weitere Fragen hast einfach melden ;)

Antwort
von Tobihogh, 26

Du müsstest doch schon im 45° Winkel fahren können. Falls du eine richtige Steuerung möchtest, musst du einen Winkel für die Vorderräder festlegen. Dann kannst du deine Geschwindigkeit mit Pythagoras auf die Streckenveränderungen umrechnen. Und den Drehpunkt muss auf der Hinterachse liegen. Das musst du ausprobieren ob es reicht die Streckenveränderung zum Mittelpunkt der Hinterachse addieren.

Keine passende Antwort gefunden?

Fragen Sie die Community