与两个相同的精灵对象andengine进行碰撞检测?

时间:2013-02-18 12:57:59

标签: android 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() {

        }
    });

我尽力集中精力解决问题。如果有人有更好的解决方案,请帮助我。

1 个答案:

答案 0 :(得分:3)

ee变量描述了要检查碰撞的对象。 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 :)
           }
         }

   }

 }