1

我正在开发一个游戏,其中在场景中以随机路径连续生成单个精灵。我对它们应用路径修饰符。在场景中的随机移动期间,一个精灵与另一个精灵重叠。我想停止这种重叠。

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

第一个:这个原因我认为如果我检测到它们之间的碰撞然后给出一条新路径可能会解决。

第二个:如果我在发生碰撞时暂停路径修改器 2/3 秒,并在恢复路径修改器后再次移动。(有可能吗?)

我现在尝试了第一种方法。 问题:我无法唯一识别精灵以在更新处理程序中进行迭代。我不使用图层来附加。

我使用通用池来生成和回收它们。

代码

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() {

        }
    });

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

4

1 回答 1

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 :)
           }
         }

   }

 }
于 2013-02-19T09:11:05.870 回答