【发布时间】:2018-05-15 03:42:12
【问题描述】:
我有一个游戏循环:
private void gameLoop() {
boolean done = false;
while (!done) {
if(pacmanState == "right") {
pac.move(20, 0);
pause(100);
}
if(pacmanState == "left") {
pac.move(-20, 0);
pause(100);
}
if(pacmanState == "down") {
pac.move(0, 20);
pause(100);
}
if(pacmanState == "up") {
pac.move(0, -20);
pause(100);
}
if(pac.getBounds().intersects(b2.getBounds())) {
if(pac.getY() <= b2.getY() - (b2.getHeight()/2)) { //Hit was from below the brick
pac.move(0, 0);
}
if(pac.getY() >= b2.getY()+ (b2.getHeight()/2)) { //Hit was from above the brick
pac.move(0, 0);
}
if(pac.getX() < b2.getX()) { //Hit was on left
pac.move(0, 0);
}
if(pac.getX() > b2.getX()){ //Hit was on right
pac.move(0, 0);
}
}
但是吃豆人直接穿过砖块。我看不出这个逻辑有什么问题。
在我之前的尝试中,我使用了一个 switch 语句,将 pacman 的移动和碰撞检测合并,如下所示:
switch (pacmanState) {
case "left":
pac.move(-20, 0);
pause(100);
if (pac.getBounds().intersects(b2.getBounds())) {
if (pac.getX() > b2.getX()) {
pac.move(0, 0);
} else {
pac.move(-20, 0);
pause(100);
}
}
break;
但是那个方法表现得很奇怪,只在砖块中途停止,或者停止后无法离开砖块failed attempt
【问题讨论】:
-
没有任何东西可以阻止
pac穿墙。在if (pacmanState...部分中,pac无论如何都会移动,在下面的if子句中检查pac是否在任何墙上(b2?),但在这种情况下,什么也没有发生(@ 987654330@)。另外:知道b2是什么会很好。
标签: java