tilemap_set_global_mask

此函数为游戏中的所有图块地图设置 图块地图位掩码

这个想法是,例如,如果您有 16 x 16 个图块的非常小的图块集,那么每个图块集中总共将有 256 个不同的图块,这仅占用 { }( 来自可用的 19 位数据)。这些位可以被 " 屏蔽",然后瓦片数据的其余部分可以用于存储附加值。请参阅 计算掩码位

图块地图位掩码是一项高级功能,允许您将图块数据 "blob" 的位供您自己使用。例如,用户可以在图块数据结构中保留一个位来表示 " 实体",然后可以检查它是否存在快速冲突。基本上,当 绘制 图块地图时,位掩码会针对图块数据进行 " 与 " 运算 (因此不会影响任何其他功能),这意味着不在掩码中的位被忽略,但用户仍可以出于自己的目的进行读取和写入。

重要 您应该确保在全局掩码中始终至少设置相同的位,以使每个图块地图掩码 (tilemap_set_mask) 按照您的方式工作预计。例如,全局掩码 0b0000111111111101 将强制任何图块地图掩码中的位 1 为 0,因为这两个掩码之间存在 " 与 " 关系,无论该位是否已设置。

 

语法:

tilemap_set_global_mask(mask);

参数类型描述
maskReal要使用的掩码值

 

返回:

N/A

 

示例1:基本使用

var _mask = tile_mirror | tile_flip | tile_rotate | 255;
tilemap_set_global_mask(_mask);

上述代码将全局图块地图位掩码设置为 8 位 (二进制 0b11111111,即值 255),同时还保留翻转、镜像和旋转值。

 

Example 2: Combining Global and Tile Map Mask

var _transform_bits = tile_mirror | tile_flip | tile_rotate;
var _mask_global = _transform_bits | 0b11111111;
var _mask_small_ts = _transform_bits | 0b1111;
tilemap_set_global_mask(_mask_global);

var _lay_id = layer_get_id("Tiles_sky");
var _map_id = layer_tilemap_get_id(_lay_id);
tilemap_set_mask(_map_id, _mask_small_ts);

上面的代码使用 tilemap_set_global_mask 设置全局图块地图位掩码。 8 位可用于平铺索引,并且保留镜像、翻转和旋转位。对于名为 "Tiles_sky" 的图层上的图块地图,设置了一个自定义掩码,仅允许 4 位用于图块索引。然而,变换位也被保留。