我正在开发一款游戏,其中使用随机路径在场景中连续生成单个精灵。我将路径修改器应用于它们。在场景上随机移动期间,一个精灵与其他精灵重叠。 我想阻止这种重叠。
立即,我找到了两个解决方案。 (可能是)
第一个:这个原因我想如果我发现他们之间的碰撞和&然后给出一条可能解决的新路径。
第二个:如果我发生碰撞时暂停路径修改器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() {
}
});
我尽力集中精力解决问题。如果有人有更好的解决方案,请帮助我。
答案 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 :)
}
}
}
}