Java KeyPressed - Не удается обнаружить нажатие пробела, если другие клавиши слишком
Как следует из названия, в моей Java-игре я не могу определить, нажимаю ли я клавишу пробела и другие клавиши одновременно.
Например, пробел является клавишей стрелять, а клавиши со стрелками заставляют игрока двигаться. Если я нажимаю клавишу со стрелкой вверх, а также клавишу со стрелкой влево и пробел, то он должен выстрелить пулями вверх и влево.
Однако после использования несколькихSystem.out.println();
для отладки я обнаружил, что если я нажимаю две клавиши, он не обнаруживает пробел, если он нажат.
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == 32){
pressingSpacebar = true;
System.out.println("Spacebar pressed true");
}
// Up arrow key
if(e.getKeyCode() == 38){
up = true;
System.out.println("Up = true");
}
// Down arrow key
if(e.getKeyCode() == 40){
down = true;
System.out.println("Down = true");
}
// Right arrow key
if(e.getKeyCode() == 39){
right = true;
System.out.println("Right = true");
}
// Left arrow key
if(e.getKeyCode() == 37){
left = true;
System.out.println("Left = true");
}
}
Тогда в keyReleased:
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == 38){
up = false;
repaint();
}
if(e.getKeyCode() == 40){
down = false;
repaint();
}
if(e.getKeyCode() == 39){
right = false;
repaint();
}
if(e.getKeyCode() == 37){
left = false;
repaint();
}
if(e.getKeyCode() == 32){
pressingSpacebar = false;
}
}
Вот как я проверяю, нажимаете ли вы клавишу пробела и несколько клавиш:
if(pressingSpacebar){
if(right == true && down == true && up == false && left == false){
// Shoot bullet
}
}
Почему пробел не обнаружен? Если я не проверяю нажатие пробела, пули стреляют нормально, но когда я проверяю пробел, он просто не обнаруживает его.
Примечание: я читал другие посты, похожие на этот вопрос, но ответы были не очень полезны. Я новичок, когда дело доходит до этого, поэтому постараюсь дать простой ответ или немного объяснить. Заранее спасибо!