Skip to content

Tilemap

Tilemap对象可用于显示基于图块的对象。这是创建RPG、策略游戏的地图或通过组装图块创建对象的好方法,对于平台游戏、复古风格游戏等非常有用...

如果您想直接开始使用,有3个示例使用了图块地图:

目前,此对象适用于高级用户,因为它需要在外部编辑器中制作图块地图:LDtk(Level Designer Toolkit)

注意

  • 目前,仅支持与Tiled导出的地图进行碰撞检测。

Tilemap

已知限制

这个对象仍处于实验阶段,将来会得到改进

  • 需要一个外部工具来编辑图块地图。
  • 地图必须保存为JSON文件(.json)使用Tiled或LDtk制作。
  • 目前仅支持直角图块地图 - 等距图块地图目前不支持。
  • Tiled地图制作者的特定限制:
    • 在Tiled中制作的地图必须具有固定大小。设置为“无限”的图块地图将不起作用。
    • 仅支持来自Tiled的碰撞 - 对于LDtk,您需要在GDevelop中手动创建它们作为独立的不可见对象。
    • 使用超过一个图块集的Tiled地图不受支持。目前支持每个Tiled图块地图一个图块集。LDtk图块地图支持每个地图多个图块集,但不支持替换图块集图集。

提示

在您开始在Tiled中制作图块地图后,请勿调整您的图集(图像文件)的大小:GDevelop不会呈现它,因为其纹理大小与Tiled文件中设置的大小不同。如果您需要调整大小图块集,则会在Tiled中创建一个新地图(在其中可以复制现有地图)。

LDtk:逐步创建新图块地图

危险

请注意,此时,LDtk地图无法导入到云项目或Web应用程序中,因为图块集资源不会与它们一起上传。

创建地图文件

  • 启动LDtk。
  • 点击新建
  • 浏览到要保存地图的位置,并为其命名。将创建一个新的空地图。LDtk地图

创建图块集

  • 点击图块集按钮或按键盘上的T键。将显示项目图块集窗口。
  • 点击加号**+**按钮以添加新的图块集。将弹出文件浏览器。
  • 导航到图块集图像文件。
  • 选择所需的图像,然后点击打开。将显示图块集。
  • 根据需要修改图块布局部分,以适应相应的图块大小(例如 16x16、32x32 等)和任何所需间距。图块集

创建图块图层

  • 点击图层按钮或按键盘上的L键。将显示项目图层窗口。
  • 点击加号**+**按钮以添加新图层。将显示选择菜单。
    • 虽然有许多图层类型,但本教程只会涵盖标准的图块图层。当前不导入实体,IntGrid 和 Auto-Layers 更加高级,应该在 ldtk.io 学习有关它们。
  • 单击Tiles选项。
  • 图层标识符字段内,键入名称。
  • 从下拉列表中选择所需的图块集。
  • 对于网格大小字段,这通常应与您的图块大小相同,或者至少是其倍数。
  • 对于大多数用例,所有其他设置都可以保持默认值。
  • 当您关闭图层窗口时,图块地图的各种图块将显示在左侧,并且可以绘制图块地图。图块图层

导出图块地图

  • 完成地图后,单击项目设置按钮,或按键盘上的P键。
  • 确保勾选使用 .ldtk 扩展名
  • 将所有其他设置保持默认值。
  • 单击另存为。将显示文件浏览器。
  • 浏览到要保存地图的位置。
  • 命名地图文件,然后单击保存
    • 请注意,虽然主ldtk项目文件可以用作GDevelop中的地图文件,但最好单独保存副本,以便地图可以保留版本,特别是如果正在使用源代码管理系统如 Github。

导入到GDevelop中

  • 在GDevelop项目中添加一个新对象。
  • 确保当前选择了从头开始创建新对象选项卡。
  • 从列表中选择图块地图对象。
  • 对象名称字段中,为地图对象命名。
  • LDtk 和 Tiled:图块地图字段中,单击选择文件
  • 如果使用桌面客户端,选择选择一个文件,如果使用 Web 应用程序,则选择设备上的文件,然后选择文件,将显示文件浏览器。
  • 浏览到上面创建的 .ldtk 图块地图文件。
  • 单击打开。如果使用 Web 应用程序,请单击添加所选文件
  • 所有其他设置可以保持默认值。
  • 点击应用。图块地图对象现在已创建,并可以拖动到场景中。图块地图对象

Tiled 教程:逐步创建新图块地图

首先找到或创建您的图块集,并将其保存为 PNG 文件。在此示例中,我们将使用可以在此处下载的_Cavernas_公共领域图块集。将文件保存在您的项目文件夹中。

mapeditor.org下载 Tiled。选择CSV、Base 64或Base 64(经过zlib压缩)作为瓦片图层格式(不支持Zstandard压缩)。选择地图的尺寸和瓦片的尺寸。不支持使用无限地图模式:

选择格式

选择一个文件来保存地图,格式为JSON文件。建议将JSON文件保存在项目文件夹中。

在Tiled中,选择创建新的图块集:

创建图块集

输入名称,选择图像文件(也称为“Atlas”),该文件保存在项目文件夹中:

选择图像文件

您可以选择嵌入在地图中,以便将图块集数据存储在Tilemap JSON文件中。如果不这样做,您将被要求选择保存Tileset JSON文件的位置,并且在设置瓦片地图时还需要选择此文件。请参阅“在捆绑或外部图块集之间选择”部分。

在Tiled中绘制您的地图:

绘制地图

最后,在GDevelop中显示地图,选择创建新的Tilemap对象。然后通过选择您的Atlas图像(包含瓦片的图像)和Tilemap JSON文件来配置它:

配置Tilemap

然后,点击应用,如果对象尚未存在,则将其拖放到场景中:

应用

处理碰撞

平台游戏通常需要不同种类的对象,如平台、跳跃或梯子。应为每种对象创建一个碰撞蒙版。下面的示例中的屏幕截图可以在在线编辑器中打开(打开项目)。

自动生成瓦片地图碰撞蒙版

警告

自动碰撞蒙版是在GDevelop 5.0.139版本中引入的。如果您使用的是旧版本,请跳转到手动定义对象碰撞蒙版

瓦片地图碰撞蒙版

创建瓦片地图碰撞蒙版对象

Tilemap collision mask对象类型将根据Tiled JSON文件中的数据构建碰撞蒙版。

创建碰撞蒙版对象

配置瓦片地图碰撞蒙版

配置与瓦片地图对象非常相似。一个重要的区别是“Class filter”属性。它允许为同一个瓦片地图创建几个碰撞蒙版对象。在上述配置中,仅保留平台。此属性值必须与Tiled中使用“Class”字段定义的值相同。

警告

如果需要,请不要忘记在对象上添加平台行为。

配置碰撞蒙版属性

定义瓦片碰撞蒙版

如前一节所述,碰撞蒙版可以被分为多个部分,以处理平台、梯子等。为此,必须在Tiled中的磁贴上设置“Class”字段。

如果整个瓦片必须包含在蒙版中,则无需在其上定义一个正方形。GDevelop会自动创建它。

提示

如果一个磁贴包含两种对象,例如一个平台和一些岩浆,那么可以独立地在每个形状上设置“Class”字段,而不是在瓦片上设置它。

Tiled中的Class字段

使用对象手动定义碰撞蒙版

可以手动创建对象作为隐形障碍或平台。以下是在使用平台行为时的一个示例:

创建对象

创建带有占位图像(可能只是一个彩色矩形)的对象,然后为其添加平台行为:

添加平台行为

使用事件在场景开始时隐藏隐形障碍/平台:

隐藏对象

您还可以将这些对象放在GDevelop中的单独图层上,并隐藏该图层。

在捆绑或外部图块集之间进行选择

Tiled允许将图块集数据嵌入到Tilemap JSON文件中。在Tiled中创建新图块集时,默认情况下会这样做,编辑地图时,选择嵌入在地图中。GDevelop对此提供了良好的支持,它将检测到Tilemap JSON文件中有一个图块集,并加载它。

如果您打算让不同的地图共享一个图块集,建议将图块集保存为单独的图块集JSON文件。这将为您提供一种小的优化,因为现在图块集只会被GDevelop解析一次。对于大型项目来说,这也更易管理。

要这样做,创建新图块集时在Tiled中取消“嵌入在地图中”的选项。然后选择另存为... 并选择存储图块集的文件:

图块集保存

最后,在GDevelop中选择图块集文件,除了选择图册图像和Tilemap JSON文件之外:

选择图块集文件

在内部,GDevelop的工作方式如下:

  • 如果您在对象中设置了图块集JSON文件,则将使用该图块集。请注意,如果同时在Tilemap JSON文件中包含了另一个图块集,则对象仍将使用外部图块集JSON文件:捆绑在一起的图块集将被忽略。
  • 如果您没有提供图块集JSON文件,则对象将查找Tilemap JSON中的图块集,并在有的情况下加载它。

动画瓦片

如果您有动画瓦片,它们需要按照正确的顺序排列在图册的单行中才能正常工作。危险

Tiled将允许您从图集的任何位置放置瓦片帧并重复某些帧 - 但是GDevelop对象将无法正确解释动画。

Tiled还允许您为每个帧设置不同的持续时间 - 但是这个扩展仅支持所有帧的统一持续时间。您可以配置动画播放的速度,但不能对每个帧进行细分。

在GDevelop中,您可以选择Tilemap动画的速度,默认为4 FPS(每秒4张图像,这意味着每个图像之间间隔250毫秒):

参考

所有行为、条件和表达式都在瓦片地图参考页面中列出。