我遇到了一個我正在做的遊戲的問題。我基本上有地圖中的對象,如果他們碰撞牆壁(然後做一些事情),我必須檢查它們中的每一個。自從與AS2一起工作以來,我就以同樣的方式考慮過:我只繪製了一幅只有牆壁的圖片,因此只有矩形,其間的所有內容都是透明的(例如不存在,然後是地板)。在AS2中,我把圖像放在屏幕上,我們稱之爲牆壁,然後對每個物體進行hitTest測試。例如,對象實際上是在圖像上,因爲透明部分是其中的一部分,但該功能僅在可見部分進行測試,對牆壁進行測試。所以它工作。AS3中的高效碰撞檢測
現在在AS3中沒有HitTest
,但是我使用了hitTestObject
,而我的例子是wall.hitTestObject(object)
。問題是這個功能就好像它沒有看到透明膠片一樣,而不接觸牆壁的物體與它們碰撞!
我發現PixelPerfectCollisionDetection
實際上解決了這個問題,但它是巨大而沉重的,所以在我的情況下,有太多的對象要在每一幀測試(至少60),遊戲變慢了很多!
我需要的是像hitTestObject
這樣的功能(我不需要很多的準確性!)來照顧圖像的透明部分。
我該怎麼辦?
在AS3中有高性能物理庫,您可以像Box2D一樣使用。 – Marty
您可以嘗試優化碰撞檢測 - 例如:在使用(慢速)hitTestObject之前,檢查2個對象是否在彼此的適當距離內。 – 2013-05-30 22:45:45