tilemap_get

使用此函数,您可以从瓦片地图元素的单元格中检索瓦片数据。

您提供图块地图元素 ID(在使用 layer_tilemap_create() 创建图块地图元素或使用函数 layer_tilemap_get_id() 时获得),如下所示以及 单元格 x 和 y 位置,该函数将返回图块数据 "blob"。该数据本质上是一个位掩码,其中包含图块索引、翻转 / 旋转 / 镜像布尔值以及已应用的任何掩码数据 (有关详细信息,请参阅 tilemap_set_mask()) 以及结果数据值然后可以在 tile_* 函数中使用来更改图块的属性。

请注意,我们根据图块地图网格的大小使用 x/y 单元格位置,而不是作为房间中的位置,因此 "cell_x" 是一个从 0 到 图块地图宽度 的值, "cell_y" 是一个从 0 到 图块地图高度 的值。如果您需要获取特定房间位置处图块的数据,则需要使用函数 tilemap_get_at_pixel()

重要 如果图块地图中的图块没有发生变化 (即:它们没有旋转、翻转等),那么图块集数据的返回值将恰好等于瓷砖组上的瓷砖。因此,您可以使用图块集中索引 1 处的一个图块创建图块的 " 碰撞图 "( 例如),然后使用此函数检查 1 或 0( 空图块) 以计算碰撞。

 

语法:

tilemap_get(tilemap_element_id, cell_x, cell_y)

参数类型描述
tilemap_element_idTile Map Element ID图块图元素的唯一ID值,用于获取
x_cellReal沿x轴的单元格,用于从中获取图块数据
y_cellReal沿y轴的单元格,用于从中获取图块数据

 

返回:

Tile Data (-1 if there is an error)

 

例子:

var lay_id = layer_get_id("Tiles_sky");
var map_id = layer_tilemap_get_id(lay_id);
var data = tilemap_get(map_id, 0, 0);
data = tile_set_flip(data, true);
tilemap_set(map_id, data, 0, 0);

上面的代码获取"Tiles_Sky"层上图块贴图的ID,然后使用该ID从单元(0,0)的块中获取数据。然后翻转此图块数据,然后再用于设置图块贴图上的图块。