在我们的游戏设计中,我们希望通过(希望)能够检查地图图像的背景层来实现碰撞检测。我们目前正在使用.png,但问题是透明度通道(alpha)对于顶层(决定透明度)是有用的信息,我们不能在不使图像透明的情况下将该层用作位掩码。因为我们的游戏是一个基于方块的角色扮演游戏,所以检查会很简单(迭代每个块大小的像素,如果是alpha=1,那么这个块就是一个地图实体,不能被遍历或踩到)。
替代方案(我们能想到的方案)需要太多的设置。例如,拥有第二个图像不会留下错误的空间,因为它们必须完全匹配。此外,将图像中的各个块指定为可漫游要求我们将此信息存储在图像中或手动设置,这太蛮力了。透明层的想法(如果你可以建议一种方法使它工作)是理想的,因为你可以只在photoshop中阴影图像并创建一个透明的图像,几乎不需要任何工作。
你能在不渲染透明度的情况下使用java中png的alpha通道作为位掩码的形式吗?有没有容易被swing处理的可以存储多个层的图像格式?
发布于 2013-03-16 12:44:06
您正在对单个值进行操作,因此为什么不在其他通道中保留1个数字。保留1600万种颜色,但保留b=0作为碰撞颜色。人们无法区分0,0,0和0,0,1,所以永远不要使用纯黑色,如果没有奇怪的透明编码,问题就解决了。
https://stackoverflow.com/questions/15449337
复制