我在检查具有相同对象的列表中的对象时遇到问题。我有一个对象列表,其中包含不同类型的对象,例如子弹、敌人和随机背景对象。现在我想检查一些物体是否相互碰撞,比如子弹与敌人。问题是,当我将相同的 for 循环放入具有相同对象的 for 循环中时,我没有得到我所期望的行为......有人知道更好的方法来处理这个问题吗?
左图显示子弹不再移动,右图显示当我移除循环内的循环时的情况。
https://www.dropbox.com/s/92tnxizxdneqgz3/ss1.png
编辑:从脚本中读取不同的字符串,我的目标是最大的灵活性。这也是我不希望每种类型的对象有不同集合的原因。当我这样做时,碰撞正在起作用。
for (Object o : objects) {
if (o.behavior.equals("aggressive")) {
o.aggressive(ship.x, ship.y, ship.z);
}
if (o.behavior.equals("missile")) {
o.missile();
if (o.type.equals("bullet_player")) {
for (Object n : objects) {
//doesn't matter what i put here
}
}
}
}
解决方案:
我让它工作了,问题似乎在于将一个数组列表的 for 循环嵌套在另一个数组列表中。我最后做的是:我克隆了arraylist,用原始对象列表检查克隆列表,我检查对象是否相同,如果不是,我做碰撞检查。