平铺地图元素

图块地图是图块集图块的集合,这些图块都被认为位于房间内的相同深度。

它可以可视化为一个网格,其中每个单元格存储一些图块数据:应在该单元格绘制的图块的索引,以及应如何绘制它 (旋转、翻转和 / 或镜像)。

每个图块地图都有自己唯一的元素 ID 和属性。

使用图块时,您会使用一些彼此相关的东西,如下所示:

注意 在房间编辑器中,每层只能使用一个图块地图,该地图是在您添加 图块层 时创建的,但在代码中使用它们时,您可以拥有多个分配给图层的平铺地图。

平铺数据 "Blob"

瓦片数据的 "blob" 存储为 32 位值。它由 19 位组成,用于存储图块集中的图块索引 (位 0 到 18),加上一些额外的位来指示应如何绘制图块数据:位 28 存储镜像位,位 29 位存储翻转位,位 30 存储旋转位,位 31 未使用。位 19 至 27 也未使用。您还可以使用这些未使用的位来存储您自己的数据。

为了更方便地访问某些位,您可以使用平铺掩码常量的值:

平铺掩模常数
常量描述
tile_rotateUsed to set/get the rotate bit of a tile data blob.
tile_mirrorUsed to set/get the mirror bit of a tile data blob.
tile_flipUsed to set/get the flip bit of a tile data blob.
tile_index_maskA special constant that is for "and"-ing with the tile data blob to extract the 19 bits of the tile index.

您可以使用 tilemap_gettilemap_get_at_pixel 获取特定地图单元格的图块数据,并使用 tilemap_settilemap_set_at_pixel设置数据。

平铺地图位掩码

您可以将自己的位掩码添加到图块地图中,以便将图块数据 "blob" 的位供您自己使用,尽管这仅适用于高级用户,因为您将屏蔽为图块地图保留的位。瓷砖索引。为您的图块索引保留了 19 位,但如果您只使用其中的 8 个,那么您还剩下 11 位可用于创建自定义掩码。然后可以使用该遮罩并在代码中检查以创建自定义图块碰撞或其他内容。

绘制 图块地图时,位掩码是针对图块数据的 "and"-ed& (因此它不会影响任何其他功能),这意味着不在掩码中的位将被忽略,但用户仍然可以出于自己的目的读取和写入。

不过,您通常不需要创建自己的图块数据 blob,而是使用函数 tilemap_get 获取图块数据,然后使用用于 编辑单个图块的函数来操作它 ,然后您可以使用 tilemap_set 再次设置它。

注意 除了每个图块地图的遮罩之外,还有一个 全局 遮罩。在用于绘图之前,GameMaker 在内部将两者按位 " 与 "& 组合在一起。

计算掩码位

要获得初始索引掩码值,您需要获取图块集中的图块数量并减去 1,因此 16x16 图块集有 256 个图块,掩码值为 255( 或十六进制的 $ff)。如果图块集的图块数量不是 2 的幂,则向上舍入到最接近的 2 的幂以获得掩码,例如 20x20 的图块集有 400 个图块,您可以将其向上舍入到 512,因此得到掩码索引值 511( 十六进制 $1ff)。除了索引掩码之外,通常您还希望保留分配给图块的翻转、旋转和镜像值,为了帮助实现这一点,可以使用 Tile Mask Constant 下的常量。这些可以与索引掩码值一起按位 " 或 " 组合 | 以保留这些数据位。

注意 有关如何使用二进制和位掩码的详细信息,请参阅 位运算符

功能参考

编辑 平铺地图元素

编辑单个图块