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