Ich programmiere ein kleines Spiel. Bisher habe ich einen Spieler, der sich in einer 2D-gedruckten Fliesenwelt dem Spieler folgend bewegen kann. Hier eine kleine preview.Kurze Verzögerung für KeyListener Ereignisse
Im Moment sieht mein Spieler Bewegung Code wie folgt:
KeyListener Klasse
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
for(int i = 0; i < handler.object.size(); i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_D) tempObject.setVelX(5);
if(key == KeyEvent.VK_A) tempObject.setVelX(-5);
if(key == KeyEvent.VK_SPACE && Var.jump == true) {
tempObject.setVelY(-10);
Var.jump = false;
}
}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
for(int i = 0; i < handler.object.size(); i++){
GameObject tempObject = handler.object.get(i);
if(tempObject.getId() == ID.Player){
if(key == KeyEvent.VK_D) tempObject.setVelX(0);
if(key == KeyEvent.VK_A) tempObject.setVelX(0);
}
}
Spielerklasse
public void tick() {
if (Var.falling == true) {
velY += Var.gravity;
if (velY > 10) {
velY = 10;
}
}
x += velX;
y += velY;
Diese Codes nur Teile der Klassen sind.
Problem
Als ich nach rechts oder nach dem mit A oder D nach links bewegte und dann die andere Taste tippen (von a bis d/von d nach a) in einer bestimmten Art und Weise, mein Charakter steht für kurze Zeit still und bewegt sich dann nach dieser kurzen Verzögerung. Siehe here.
Können Sie das konkretisieren, was „Ein gewisser Weise“ ist? Im Idealfall, wenn Sie es ausarbeiten können, die genaue Abfolge von Keydowns und Keyups. Es kann helfen, diese in Ihrem Programm zu protokollieren. – slim