在我的libgdx的render()
方法中,我有这个循环,它迭代一系列敌人并检查玩家是否与他们相撞。如果是这样,屏幕会切换到游戏结束界面,玩家可以重新开始游戏。
for(Enemy x: enemies){
if(x.bounds.overlaps(player.bounds)){
game.setScreen(game.gameOver);
}
}
我的问题是,敌人仍然在他们的位置,当玩家与其中一个碰撞,尽管玩家已经重新启动游戏,reset()
方法已经运行。从视觉上看,一切都被重置了——只是碰撞检测发现敌人不是现在显示的位置,而是重新开始之前的位置。
如果我删除for循环,并为每个单独的敌人写一个If语句,它就可以工作了。
if(player.bounds.overlaps(enemy1.bounds)){
game.setScreen(game.gameOver);
}
对编程有点陌生。如果有人能帮忙,我会很感激的!
如果您检测到碰撞,请尝试添加break
到您的循环:
for(Enemy x: enemies){
if(x.bounds.overlaps(player.bounds)){
game.setScreen(game.gameOver);
break;
}
}
这将防止调用game.setScreen(game.gameOver);
多次,如果更多的敌人与玩家碰撞在同一时间。