如何将游戏地图的图像文件转换为程序中的边界?

时间:2008-09-26 02:41:33

标签: language-agnostic

我有一张基本游戏地图的图片。可以把它看作只是水平和垂直的墙壁,不能交叉。如何轻松地从墙壁的png图像转换为代码?

艰难的方式非常直接......只是如果我改变了图像地图,我想要一种简单的方法将其转换为代码。

谢谢!

编辑:地图不是基于图块的。它是自上而下的2D。

5 个答案:

答案 0 :(得分:1)

我需要更多细节。

你的游戏牌是否基于?是3d吗?

如果基于其图块,您可以将图像下采样为图块分辨率,然后使用表示图块的每个像素进行1:1转换。

答案 1 :(得分:1)

我建议编写一个脚本,该脚本采用每个单独的像素并确定它是否代表墙的一部分(即黑色或白色)。然后,对游戏进行编码,使墙壁由单个小块构建,由像素表示。不应该太难......

答案 2 :(得分:1)

我涉猎视频游戏,我个人不希望在地图上检查图片边界的麻烦。如果这些墙壁恰好碰巧有图像属性(或类似的东西),那会不会更清洁?将显示图像,但对象将具有良好定义的坐标,并且函数可以决定每次玩家移动时是否击中了对象。

答案 3 :(得分:0)

如果您不需要使用地图信息预先计算任何内容。您可以使用getPixel(x,y)函数检查运行时逻辑。

答案 4 :(得分:0)

嗯,我可以看到两个案例有两个不同的“最佳解决方案”,具体取决于图形的来源:

  1. 您的图形是平铺的,因此您可以轻松地“识别”一个块,因为它使用与其他块相同的图形,所有您需要做的就是一个程序,当给出“阻塞瓷砖”列表时“并且地图可以通过将每个图块与”阻止列表“中的图块进行比较来产生”碰撞图“。

  2. 您的图形只是一些图形(例如,它可能是图片,或某些CG图形),您不希望块的像素与另一个块的像素相同。您仍然可以尝试在图片上应用“边缘检测”算法,但我的猜测是您应该将图片分割为BG图层和FG图层,以便FG图层具有预定义的颜色(或alpha) = 0)并根据该颜色测试像素以定义是否阻挡。

  3. 您没有太多阻挡形状,但它们通常很复杂(多边形,椭圆形),使用世界位图渲染或打包为“磁贴属性”效率不高。例如,这通常是点击式冒险游戏的情况。在这种情况下,您可能需要使用矢量绘图程序创建与边界匹配的路径,并挖掘执行多边形交叉或贝塞尔碰撞的库。

  4. 祝你好运,玩得开心。