Hallo
Ich habe gerade ein kleines Problem mit meinem "Jump and Run"-Spiel und ich bin mir unsicher, ob es am KeyListener generell liegt oder an meiner Implementierung.
Ist es normal, das der KeyListener eine kurze "Pause" einlegt, wenn man die Pfeiltasten Links/Rechts bzw. Oben/Runter in irgendeiner Reihenfolge drückt?
Ich habe das Problem, das wenn ich mit dem Spieler nach Rechts laufe und dann Links drücke, der KeyListener eine kurze Pause einlegt und wenn ich während dieser z.B. nach Oben drücke, der Spieler nur noch springt, anstatt nach links zu springen.
Die KeyPressed-Methode ist ganz einfach aufgebaut:
Anhand der prints erkenne ich, ob die Tasten erkannt werden oder eben nicht.
Ich habe keine Ahnung wie ich dem Problem ohne komplexe Lösung vorbeugen soll.
Wobei, eine funktionierende komplexe Lösung fällt mir auch nicht ein :/
Hoffe ihr versteht was ich meine und das ihr irgendeine funktionierende (und wenn möglich einfache) Idee habt!
Edit: Eine Lösung die vielleicht funktionieren könnte (ich hab es noch nicht ganz durchgedacht), wäre die Flags die gesetzt werden jeweils doppelt zu verwenden. Sprich jene für die wirklichen Tasteneingaben und dann welche für die spielinterne Bewegung.
MfG
Ich habe gerade ein kleines Problem mit meinem "Jump and Run"-Spiel und ich bin mir unsicher, ob es am KeyListener generell liegt oder an meiner Implementierung.
Ist es normal, das der KeyListener eine kurze "Pause" einlegt, wenn man die Pfeiltasten Links/Rechts bzw. Oben/Runter in irgendeiner Reihenfolge drückt?
Ich habe das Problem, das wenn ich mit dem Spieler nach Rechts laufe und dann Links drücke, der KeyListener eine kurze Pause einlegt und wenn ich während dieser z.B. nach Oben drücke, der Spieler nur noch springt, anstatt nach links zu springen.
Die KeyPressed-Methode ist ganz einfach aufgebaut:
Code:
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP){
player.setUp(true);
System.out.println("Up");
}
if(e.getKeyCode()==KeyEvent.VK_DOWN){
player.setDown(true);
System.out.println("Down");
}
if(e.getKeyCode()==KeyEvent.VK_LEFT){
player.setLeft(true);
System.out.println("Left");
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
player.setRight(true);
System.out.println("Right");
}
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
game_running = false;
}
}
Anhand der prints erkenne ich, ob die Tasten erkannt werden oder eben nicht.
Ich habe keine Ahnung wie ich dem Problem ohne komplexe Lösung vorbeugen soll.
Wobei, eine funktionierende komplexe Lösung fällt mir auch nicht ein :/
Hoffe ihr versteht was ich meine und das ihr irgendeine funktionierende (und wenn möglich einfache) Idee habt!
Edit: Eine Lösung die vielleicht funktionieren könnte (ich hab es noch nicht ganz durchgedacht), wäre die Flags die gesetzt werden jeweils doppelt zu verwenden. Sprich jene für die wirklichen Tasteneingaben und dann welche für die spielinterne Bewegung.
MfG
Zuletzt bearbeitet: