对于 IndexOutOfBoundsException:
嗨,我正在制作类似游戏的太空入侵者,当子弹与敌人相撞时我遇到了问题。这是代码:
for (int i = 0; i < enemies.size(); i++) {
for (int j = 0; j < bullets.size(); j++) {
if (collidesWith(bullets.get(j), enemies.get(i))) { //Line 81 The Error Occurred here
enemies.remove(i);
bullets.remove(j);
addScore(1);
}
}
}
碰撞代码:
public static boolean collidesWith(Entity collider, Entity collided) {
Rectangle hitBox1 = collider.getHitbox();
Rectangle hitBox2 = collided.getHitbox();
return hitBox1.intersects(hitBox2);
}
Hitbox 的代码:
@Override
public Rectangle getHitbox() {
return new Rectangle(getX(), getY(), getWidth(), getHeight());
}
错误消息:
Exception in thread "Thread-4" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at io.github.kjordo711.game.Main.run(Main.java:81)
at java.lang.Thread.run(Thread.java:724)
我认为由 2 颗或更多子弹造成的错误击中了敌人
对于 OutOfMemoryError:
玩家可以在按住 Space 的情况下一次射出太多子弹,子弹将继续射击而不会延迟我可以限制子弹的生成,但问题是即使屏幕上最多 10 颗子弹,错误仍然会发生,我试图延迟它
Thread.sleep(500);
但它只是睡眠所有的游戏线程