Actionscript 重叠时如何使Flixel忽略透明图像?

Actionscript 重叠时如何使Flixel忽略透明图像?,actionscript,transparency,collision-detection,flixel,Actionscript,Transparency,Collision Detection,Flixel,我使用Photoshop创建了一组静态对象,一堆墙和门,并使背景透明。bunchOfWalls图像的大小与我的地图(600x600x)相同 所以,当我做FlxU.overlap时(bunchOfWalls,myHero,heroHitWalls),此功能会在英雄每次移动时触发,因为它会在检测到与图像透明区域的每次碰撞时触发。这意味着英雄无法移动,因为图像层位于地图层本身的顶部,并且大小相同(均为600x600) 有没有办法让Flixel忽略我的bunchOfWalls图像的透明区域,或者有没有其

我使用Photoshop创建了一组静态对象,一堆墙和门,并使背景透明。
bunchOfWalls
图像的大小与我的地图(600x600x)相同

所以,当我做
FlxU.overlap时(bunchOfWalls,myHero,heroHitWalls),此功能会在英雄每次移动时触发,因为它会在检测到与图像透明区域的每次碰撞时触发。这意味着英雄无法移动,因为图像层位于地图层本身的顶部,并且大小相同(均为600x600)


有没有办法让Flixel忽略我的
bunchOfWalls
图像的透明区域,或者有没有其他方法可以达到同样的效果

每个Flx对象都有一个边界框,它是一个用于确定碰撞的矩形。内置的
FlxG.collide()
&
FlxG.overlap()
函数仅检查对象的边界框是否相交。透明度没有得到考虑

那么你如何解决这个问题呢?你可以

1) 将背景图像拆分为不具有透明度的墙块。然后可以继续使用Flixel的碰撞方法

2) 使用考虑透明度的像素完美碰撞方法。我非常喜欢这个插件,它包含了很多有用的特性,其中之一就是像素完美碰撞。它非常容易使用,在您的情况下,它可能看起来像这样:

if (FlxCollision.pixelPerfectCheck(bunchOfWalls, myHero))
{
    heroHitWalls();
}

使用flixel的另一个很好的选择是为你的墙创建一个
FlxTilemap
,而不是一个单一的大型精灵。与@WgFunstorm的第一个建议相同的基本原则;将墙壁分成若干部分,然后根据这些部分进行碰撞。

为什么不使用Illustrator或Fireworks等提供向量的程序?