我遇到了一个我正在做的游戏的问题。我基本上有地图中的对象,如果他们碰撞墙壁(然后做一些事情),我必须检查它们中的每一个。自从与AS2一起工作以来,我就以同样的方式考虑过:我只绘制了一幅只有墙壁的图片,因此只有矩形,其间的所有内容都是透明的(例如不存在,然后是地板)。在AS2中,我把图像放在屏幕上,我们称之为墙壁,然后对每个物体进行hitTest测试。例如,对象实际上是在图像上,因为透明部分是其中的一部分,但该功能仅在可见部分进行测试,对墙壁进行测试。所以它工作。AS3中的高效碰撞检测
现在在AS3中没有HitTest
,但是我使用了hitTestObject
,而我的例子是wall.hitTestObject(object)
。问题是这个功能就好像它没有看到透明胶片一样,而不接触墙壁的物体与它们碰撞!
我发现PixelPerfectCollisionDetection
实际上解决了这个问题,但它是巨大而沉重的,所以在我的情况下,有太多的对象要在每一帧测试(至少60),游戏变慢了很多!
我需要的是像hitTestObject
这样的功能(我不需要很多的准确性!)来照顾图像的透明部分。
我该怎么办?
在AS3中有高性能物理库,您可以像Box2D一样使用。 – Marty
您可以尝试优化碰撞检测 - 例如:在使用(慢速)hitTestObject之前,检查2个对象是否在彼此的适当距离内。 – 2013-05-30 22:45:45