Processing 从二维阵列中删除对象-处理

Processing 从二维阵列中删除对象-处理,processing,Processing,我正在制作一个简单的太空入侵者游戏。我想在入侵者被子弹击中后删除他们中的一个。入侵者是由2D图像数组组成的,我已经测试了图像和子弹之间的碰撞(在ArrayList中),效果很好。因此,游戏检测到碰撞,下一步是删除已命中的正确对象。我有点困惑,如何正确地对应子弹在2D数组中击中的对象,然后将其从数组中删除并继续游戏 下面是我如何在setup()中创建入侵者阵列的 for(inti=0;i您使用的是固定大小的数组。 从理论上讲,您可能可以使用像和这样的数组辅助函数,但您确实需要注意计数器和数组结构。

我正在制作一个简单的太空入侵者游戏。我想在入侵者被子弹击中后删除他们中的一个。入侵者是由2D图像数组组成的,我已经测试了图像和子弹之间的碰撞(在ArrayList中),效果很好。因此,游戏检测到碰撞,下一步是删除已命中的正确对象。我有点困惑,如何正确地对应子弹在2D数组中击中的对象,然后将其从数组中删除并继续游戏

下面是我如何在setup()中创建入侵者阵列的


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);
    }
    */
}