二进制空间分区是一种用于为益智游戏和平台游戏创建2D地图的简单技术。 我们使用BSP在BentoBlox中生成“可解决的”级别:
我们到底如何使用BSP? 在BentoBlox中 ,我们将网格递归地划分为不小于最小大小的子网格。 在这种情况下,这就是BSP的本质。 抽象地,我们只是取一个矩形并重复平分,直到得到一个较小矩形的网格:
这是我们的方法:
我们从Grid
结构开始( 注意:所有代码都是Swift ):
接下来,我们使用一个将其(水平或垂直)划分为2个子网格的函数扩展Grid
:
通过以这种方式扩展Grid
,我们可以递归调用函数以生成适合我们初始网格且不重叠的子网格集合。
但是,我们需要注意一些事情。 是什么阻止我们生成太小的子网格? 区域0的子网格不是很有用。 为了避免这种结果,我们可以告诉我们的调用函数在其生成低于某个最小大小的子网格时返回:
这就是我们真正需要的。 现在,我们可以通过单个函数调用生成“可解决”级别:
产生一个包含4个大小不同的矩形的级别:
您将在BentoBlox中发现更多类似的巧妙内容-在App Store上查看游戏。