2013-02-18 107 views
1

我正在开发一个游戏,在一个随机路径的场景中连续生成一个精灵。我将路径修饰符应用于它们。在场景中随机移动时,一个精灵与其他精灵重叠。 我想停止这种重叠。碰撞检测与两个相同的精灵对象andengine?

瞬间,我找到了两个解决方案。 (可能)

第一个:这个原因,我想如果我发现他们之间的碰撞&然后给一个新的路径可以解决。

第二个:如果我暂停路调节2/3秒时发生碰撞,并再次重新开始移动的路径修改后(这可能吗?)

我第一次尝试的办法现在。 问题:我无法唯一识别sprite以在Update处理程序中进行迭代。我不使用图层来附加。

我用通用池生成&回收它们。

代码

public Iterator<EasyEnemy> eIt; 

registerUpdateHandler(new IUpdateHandler() { 
     @Override 
     public void onUpdate(float pSecondsElapsed) { 
      try { 
       // ===get EasyEnemy List from it=== 
       eIt = getEasyEnemyIterator(); 
       while (eIt.hasNext()) { 
        EasyEnemy ee = eIt.next(); 

        // need some help here 
        if (ee.collidesWith(ee)) { 

         // this doesn't work. 

        } 
       } 
      } catch (Exception e) { 
      } 
     } 

     @Override 
     public void reset() { 

     } 
    }); 

我尽量让其专注我的问题。如果有人有更好的解决方案,请帮助可以帮助我。

回答

3

ee变量描述了你想检查碰撞的对象。 ee碰撞的另一个物体在哪里?基本上你正在检查与ee碰撞。

的对象将永远不会与它自身碰撞:)

你需要有两个不同的对象,他们之间的碰撞检查。 像这样的情况下,你有一个ArrayList中的所有对象。

for(int i = 0; i< yourList.size()-1;i++) 
{ 
    for(int j = 0; j< yourList.size()-1;j++) 
    { 

     if(yourList.get(i)!= yourList.get(j)) 
     { 
      if(yourList.get(i).collideswith(yourList.get(j)) 
      { 
      //do what you want to do on collision :) 
      } 
     } 

    } 

}