mp_grid_add_cell

使用此函数,我们可以将给定 MP 网格内的单个单元格标记为 " 禁止",这意味着路径查找函数将永远不会穿过它们。现在,通常您使用的是 x/y 房间 坐标,而不是 MP 网格 单元格 坐标。因此,让我们考虑一下以下图像,它显示了这两者之间的关系:

Add cell example正如您可以看到的那样,mp_grid被编号为一系列单元格(从左上角的0,0开始),当您将此网格放置在房间上时,房间坐标(也从左上角的0,0开始)与网格中的单元格之间存在直接关联。在图像中,您可以看到位于260、130处的实例落在网格单元8、4上。通过将数字除以网格分辨率,然后向下舍入,可以在数学上计算位置轻松到达的精确单元格。如果使用2个网格分辨率的幂(如8、16、32等),则可以使用位运算符。需要注意的是,位运算速度更快,下面的示例显示了这两种方法。

 

语法:

mp_grid_add_cell(id, h, v);

参数类型描述
idMP Grid ID要使用的 mp_grid 的索引
hReal单元格在网格中的水平位置
vReal网格中单元格的垂直位置

 

返回:

N/A

 

例子:

with (obj_Wall)
{
    mp_grid_add_cell(grid, floor(x / 32), floor(y / 32));
}
with (obj_Door)
{
    mp_grid_add_cell(grid, x>>5, y>>5);
}

上述代码将使所有"obj_Wall"和所有obj_Door将其等效单元格位置添加到变量"grid"中索引的mp_grid中。在示例的第一部分中,这是通过获取对象的x/y坐标并将其除以网格的分辨率(使用floor将值保持为整数)来完成的,而在第二部分(由于网格分辨率是2的幂)中,这是通过将x、y坐标向右移5位来完成的。