我正在研究一个简单的平台游戏,并且在播放器跳跃方面遇到了麻烦。发生的事情是,如果我按住空格键,玩家就会继续上升。我需要一些方法让播放器按空格键跳转一次。我目前用于跳转的KeyListener设置如下。
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
Input.jump = true;
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
Input.jump = false;
}
在我的Player类中,我有以下内容来切换跳转
if(Input.jump == true) jump();
非常感谢任何帮助!
答案 0 :(得分:1)
问题不在于每次按键都会调用该事件 - 问题是Input.jump
在您放开密钥之前是真的。
您可以尝试这样的事情:
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
if(!Input.jump) {
velocity += jumpVelocity;
}
Input.jump = true;
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
Input.jump = false;
}
然后使用力度移动角色。
或者您可以使用某种布尔值 - 这实际上取决于您的情况。如果您使用布尔值,那么您需要具有类似以下代码的内容:
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE)
if(!Input.jump) {
isJumping = true;
} else {
isJumping = false;
}
Input.jump = true;
}