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

Language agnostic 如何将游戏地图的图像文件转换为程序中的边界?,language-agnostic,Language Agnostic,我有一张基本游戏地图的图像。把它想象成水平和垂直的墙,它们是不能交叉的。我怎样才能轻松地从墙的png图像转换成代码 艰难的道路是相当直截了当的。。。只是如果我改变了图像映射,我想用一种简单的方法把它转换成代码 谢谢 编辑:地图不是基于平铺的。它是自上而下的2D。我需要更多细节 你的游戏是基于磁贴的吗?是3d的吗 如果它是基于平铺的,您可以将图像采样降低到平铺分辨率,然后对每个像素进行1:1转换,每个像素代表一个平铺。我需要更多详细信息 你的游戏是基于磁贴的吗?是3d的吗 如果它是基于平铺的,您可

我有一张基本游戏地图的图像。把它想象成水平和垂直的墙,它们是不能交叉的。我怎样才能轻松地从墙的png图像转换成代码

艰难的道路是相当直截了当的。。。只是如果我改变了图像映射,我想用一种简单的方法把它转换成代码

谢谢

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

我需要更多细节

你的游戏是基于磁贴的吗?是3d的吗

如果它是基于平铺的,您可以将图像采样降低到平铺分辨率,然后对每个像素进行1:1转换,每个像素代表一个平铺。

我需要更多详细信息

你的游戏是基于磁贴的吗?是3d的吗


如果它是基于平铺的,您可以将图像采样降低到平铺分辨率,然后对表示平铺的每个像素进行1:1转换。

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

如果不需要使用映射信息预计算任何内容。您可以使用类似getPixel(x,y)的函数检入运行时逻辑。

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

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

我涉足电子游戏,我个人不想麻烦检查地图上图片的边界。如果这些墙是碰巧具有图像属性(或类似属性)的对象,不是更干净吗?图像将显示出来,但对象将具有定义良好的坐标,并且有一个函数可以确定玩家每次移动时是否击中对象。

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

好的,我可以看到两种情况,它们具有两种不同的“最佳解决方案”,具体取决于图形的来源:

  • 您的图形是平铺的,因此您可以轻松地“识别”一个块,因为它与其他块使用相同的图形,您所要做的只是一个程序,当给定“块平铺”列表和贴图时,可以通过将每个平铺与“块列表”中的平铺进行比较来生成“碰撞贴图”

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

  • 您没有太多的块形状,但它们通常很复杂(多边形、椭圆),无法使用世界位图进行渲染或打包为“平铺属性”。例如,点击式冒险游戏就是这样。在这种情况下,您可能需要使用矢量绘图程序创建与边界匹配的路径,并挖掘进行多边形相交或bezier碰撞的库


  • 祝你好运,玩得开心。

    好吧,我可以看到两种情况,根据你的图形来自哪里,有两种不同的“最佳解决方案”:

  • 您的图形是平铺的,因此您可以轻松地“识别”一个块,因为它与其他块使用相同的图形,您所要做的只是一个程序,当给定“块平铺”列表和贴图时,可以通过将每个平铺与“块列表”中的平铺进行比较来生成“碰撞贴图”

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

  • 您没有太多的块形状,但它们通常很复杂(多边形、椭圆),无法使用世界位图进行渲染或打包为“平铺属性”。例如,点击式冒险游戏就是这样。在这种情况下,您可能需要使用矢量绘图程序创建与边界匹配的路径,并挖掘进行多边形相交或bezier碰撞的库

  • 祝你好运,玩得开心