程序2d地牢上的凹面船体

时间:2016-11-02 20:11:37

标签: algorithm random 2d generator concave

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

我的想法是在地牢周围制作某种“凹形船体”(参见图片和白色轮廓)并用“跳跃的瓷砖”填充空的内部。即使这样,也会有一个问题,即内部的间隙不够小(参见地图中间的大洞,有蓝色和黄色的linese)。

那么我怎样才能检测到空白区域何时不用跳跃图块(蓝线)填充以及何时应添加跳转图块(黄色线条)。

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

MS Paint demonstration

1 个答案:

答案 0 :(得分: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-two tile来编码所有变体。