2

我将在hitTestObject()每一帧中使用很多精灵(例如4 * 500)。会有许多虚假的,只有少数或没有真实的。

我想我可能会先检查距离sprite1.x - sprite2.xsprite1.y - sprite2.y以便只检查附近的物体是否有碰撞。然后我想知道 ActionScript 例程是否已经首先检查距离?Flash 在很多方面都进行了优化,所以我必须费心提高碰撞检测的性能吗?

// something like this ?

public static function near(sprite1: Sprite, sprite2: Sprite): Boolean
{
    return (Math.abs(sprite1.x - sprite2.x) < 64) && (Math.abs(sprite1.y - sprite2.y) < 64);
}

if (near(sprite1, sprite2))
    if (sprite1.hitTestObject(sprite2))
        collide(sprite1, sprite2);
4

2 回答 2

3

不,hitTestObject()没有以这种方式优化。所以,如果你可以减少hitTestObject()通话量,那就去做吧。

于 2013-10-27T14:05:00.333 回答
1

如果你想在许多对象上表现,你应该尝试形状碰撞。如果您不想自己编写代码,只需查看Box2DNape 即可。两种引擎都经过大量优化以进行此类计算。

于 2013-10-28T04:29:46.780 回答