我的碰撞方法问题如下 . 问题是游戏中有两个敌人 . 它与循环中的一个敌人相交,并继续返回true以进行碰撞 . 但是如果在这个数组中有第二个敌人List它将不会与第二个对象发生碰撞,因此导致它返回false并且玩家继续行走 . 任何关于如何在他与任何敌人接触时让他停下来的想法,而不仅仅是继续,因为他没有与所有敌人接触?谢谢,这是代码 .
public void checkCollision(){
ArrayList<Enemy> enemy = c.getEnemyList();
for ( int i = 0; i < enemy.size(); i++){
Enemy e = enemy.get(i);
if (!getBounds().intersects(e.getBounds())){
walk();
return;
}
if (getBounds().intersects(e.getBounds())){
if (e.getHP() <= 0){
c.removeEnemy(e);
walk();
return;
}
fight();
if (count == 25 || count == 65){
int dd = DCalc.calcDmg(atk, atkMAX);
e.dmg(dd);
}
}
}
}
1 回答
这只是“早期回归”问题的另一个例子 . 当您需要检查格式(如果ANY,x,否则为y)或(如果为ALL,x,否则为y)并以格式(如果为FIRST,x,则为y)对其进行重新格式化时,会出现此问题 .
要解决此问题,您需要重新制作算法,如下所示: