我正在尝试制作一个驴子游戏。 目前,我有一个名为jump的布尔值,当按下空格键时,它会告诉游戏玩家是否跳跃。
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE){
StartJump();
}
}
StartJump:通过改变速度使精灵开始跳跃。它还将跳转布尔值更改为true。
public void StartJump() {
if (onground) {
velocityY = -4;
onground = false;
jump = true;
}
}
的keyReleased:
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE){
EndJump();
}
}
EndJump:将跳转设置为false
public void EndJump() {
if(velocityY < -6.0)
velocityY = -6;
jump = false;
}
按住空格键时会出现问题,跳转设置为true。 然后导致马里奥Y位置的forloop不起作用,他跌倒在地板上。
循环:砖块只包含矩形,供马里奥站立
for(int i = 0; i < bricks.size(); i++) {
if(marHitBox.intersects(bricks.get(i)) && !mario.getClimb() && !mario.getJump() && marHitBox.intersects(jump.get(i))) {
mario.setMarY((int)bricks.get(i).getY()-40);
mario.setVeloY(0f);
mario.setOnGround(true);
}
}
导致问题的是!mario.getJump()。有没有办法看看空格键是否被保持超过x毫秒才能使jump = false?
答案 0 :(得分:0)
尝试测量按下和释放空格键之间的经过时间,它将满足您的需要。
答案 1 :(得分:0)
我认为只是一张支票会让它消失
public void StartJump(){
if (!jump && onground){
velocityY = -4;
onground = false;
jump = true;
}
}