AS3中基于四叉树的java冲突检测
好的。我成功地制作并使用了四叉树作为碰撞检测算法,效果很好。我有我的敌人,把他们放在四叉树中,然后找到可能与我的英雄相撞的候选人。这就是hitTestObject()多次重复
我遇到的问题是如何快速测试一些敌人是否与我英雄的子弹相撞。我在台上同时大概有4-6发子弹。在这种情况下,我用hitTstObject 4-6发子弹攻击许多敌人的物体,这反过来又让我以循环为周期,所以即使使用四叉树,过了一段时间,事情也开始滞后于舞台:)
我使用本教程quadtree in java来开发m算法,但它仅在上述情况下工作良好。在这种情况下我该怎么办?使用另一种算法处理多个或多个
大致上这就是代码
bulletsQuadTree.clear();
for (var bIndex:uint; bIndex < allEnemies.length; bIndex += 1 )
{
bulletsQuadTree.insert(allEnemies[bIndex]);
}
for (var bc:uint = 0; bc < bullets.length; bc += 1 )
{
var enemiesCollideBullets:Array = new Array();
bulletsQuadTree.retrieve(enemiesCollideBullets, bullets[bc]);
for (var dc:uint = 0; dc < enemiesCollideBullets.length; dc += 1 )
{
if (enemiesCollideBullets[dc].hitTestObject(bullets[bc]))
{
enemiesCollideBullets[dc].destroy();
enemiesCollideBullets.splice(dc, 1);
}
}
}
这发生在每一帧上,每一帧有很多操作:(
每一颗子弹都被视为英雄,每一颗可能与之相撞的子弹都会返回一系列敌人
# 1 楼答案
如果要提高此循环的性能,请更改以下行:
actionscript命中测试功能很慢。检查子弹的更好方法是检查距离