多个If语句 - 仅检查玩家碰撞一次

时间:2016-12-16 03:33:27

标签: java if-statement

我目前正在制作游戏和玩家移动,我有if语句来检查你是否遇到了墙壁。

以下是我正在做的一个小例子:

if(!(player.intersects(wall1)){

        // move

}

然而,我的问题是,现在我正在为不同级别添加更多墙,if语句变得有点不稳定。例如,添加第二个墙:

    if(!(player.intersects(wall1)){

            // move

    }
    if(!(player.intersects(wall2)){

            // move

    }

但是这只会使移动速度加倍,因为如果你没有击中任何墙壁,两者都会成为现实。

我尝试过的事情

我已尝试在其中添加其他内容,例如:

if(!(player.intersects(wall1)){

        // move

} else
if(!(player.intersects(wall2)){

        // move

}

但这会导致不检查两面墙。

如何有效地添加多个检查多个墙的if语句?

2 个答案:

答案 0 :(得分:2)

您要做的是检查是否碰到任何墙壁,如果没有,请移动

if(!(player.intersects(wall1) && !(player.intersects(wall2) /* and so on */){

        // move

}

答案 1 :(得分:1)

  

但是这只会使移动速度加倍,因为两者都会产生真实的效果   你没有撞墙。

鉴于两个if语句,结果应该是这样的。

Pic for illustration

这是一些简单的概率论。

当你与wall1相交时,它会变成红色

当你与wall2相交时,它会变成绿色

当你不动或任何其他情况时,它会变成黑色。

  

如何完成添加多个检查的if语句   有效的多面墙?

我想你想检查玩家是否成功不与墙碰撞,它会获得速度奖励。

您需要更改算法。 例如,

// a line of area is newly added as a checkpoint
if (player not collide with walls and passed through a line of area) { 
    rewarded 
} else if (player collide with walls and passed through a line of area) {
    not rewarded
} else {
    not rewarded
    // it may be probably not moving or not collide with anything and 
    // not passing through our checkpoint
}

希望有所帮助