Processing 从二维阵列中删除对象-处理
我正在制作一个简单的太空入侵者游戏。我想在入侵者被子弹击中后删除他们中的一个。入侵者是由2D图像数组组成的,我已经测试了图像和子弹之间的碰撞(在ArrayList中),效果很好。因此,游戏检测到碰撞,下一步是删除已命中的正确对象。我有点困惑,如何正确地对应子弹在2D数组中击中的对象,然后将其从数组中删除并继续游戏 下面是我如何在setup()中创建入侵者阵列的Processing 从二维阵列中删除对象-处理,processing,Processing,我正在制作一个简单的太空入侵者游戏。我想在入侵者被子弹击中后删除他们中的一个。入侵者是由2D图像数组组成的,我已经测试了图像和子弹之间的碰撞(在ArrayList中),效果很好。因此,游戏检测到碰撞,下一步是删除已命中的正确对象。我有点困惑,如何正确地对应子弹在2D数组中击中的对象,然后将其从数组中删除并继续游戏 下面是我如何在setup()中创建入侵者阵列的 for(inti=0;i您使用的是固定大小的数组。 从理论上讲,您可能可以使用像和这样的数组辅助函数,但您确实需要注意计数器和数组结构。
for(inti=0;i您使用的是固定大小的数组。
从理论上讲,您可能可以使用像和这样的数组辅助函数,但您确实需要注意计数器和数组结构。
在实践中,对于初学者来说,我认为这很容易出错
将命中入侵者的数组元素设置为null
,可能更简单(但更黑客),
然后在测试冲突/渲染等之前简单地检查入侵者是否为null
e、 g.在绘图()中:
for(int i=0;i尝试将命中检测与从arraylist中删除元素分离,可能使用标志并在绘图循环的末尾删除。使用arraylist.size()作为代码一部分中循环的限制。也许这可以解决您的命中检测问题,也许您需要一个计数器。我正在考虑切换到ArrayList,但不确定如何处理两行,但我会尝试。非常感谢!如果有帮助,请随意投票和/或标记答案;)我现在已经将所有内容都更改为ArrayList,谢谢:)但是命中检测关闭了,有时注册,有时不注册。例如,子弹穿过第一排入侵者,然后击中第二排(后排)。remove方法适用于一些入侵者,之后由于某种原因,我得到一个IndexOutOfBoundsException错误。这取决于你如何进行碰撞检测。现在还不清楚是否同样的子弹穿过了第一个入侵者,然后是第二个入侵者,以及它是否应该这样做。我建议问一个单独的问题,详细说明这方面
for(int i=0; i<2; i++){
for(int j=0; j<4; j++){
if(invArray[j][i] != null){
invArray[j][i].update();
if(invArray[j][i].y>=600){
invArray[j][i].y= 0;
invArray[j][i].render();
}
}
}
}
ArrayList<Taxi> invaders = new ArrayList<Taxi>();
for(int i=0; i<2; i++){
for(int j=0; j<4; j++){
invaders.add(new Taxi(taxiX, taxiY));
taxiX= taxiX+ 100;
}
taxiX=20;
taxiY= taxiY+ 140;
}
for(int i = 0 ; i < invaders.size(); i++){
Taxi t = invaders.get(i);
t.update();
if(t.y>=600){
t.y= 0;
t.render();
}
/*
if(YOUR_HIT_CONDITION_HERE){
invaders.remove(t);
}
*/
}