0

目前我们的游戏中有预先制作的地下城关卡,但我们正在研究一种算法,为我们的游戏生成随机地下城。生成部分没问题,但是我们的游戏中有跳跃,所以玩家可以跳过一定大小的间隙(比如说大约 5 个图块)。(见图片和黄线)跳跃区域充满了瓷砖,在地面上充当墙壁,但在玩家“滑过”时充当地面。

我的想法是在地牢周围制作某种“凹壳”(参见图片和白色轮廓),并用“跳砖”填充空的内部。即便如此,也会有一个问题,即内部的间隙不够小(参见地图中间的大洞,蓝色和黄色线条)。

那么我如何检测何时不填充跳跃图块(蓝线)以及何时添加跳跃图块(黄线)。

通过搜索凹壳和凸壳(图像中的红线),我没有找到任何有用的东西。

MS Paint 演示

4

1 回答 1

0

你只允许东西向或南北直跳,对吧?

伪代码:

for all floor tiles
   find the next floor tile traveling south, stop when one is found or after examining 6 tiles
   if a floor tile was found then mark the intervening tiles as jump tiles

   find the next floor tile traveling east, stop when one is found or after examining 6 tiles
   if a floor tile was found then mark the intervening tiles as jump tiles

请注意,如果您说一个 8x5 瓷砖的矩形,这可能允许跳过更长的墙壁。这样的矩形将标有跳跃瓷砖,因为您可以在它只有 5 块宽的方向上跳过它。但随后它将允许跳过一堵 8 瓦长的墙。不过,这是您的数据模型的限制。您需要 jump-x、jump-y 和 jump-both 瓷砖来编码所有变体。

于 2016-11-03T00:57:55.200 回答