【问题标题】:Concave hull on procedural 2d dungeon程序 2d 地牢上的凹壳
【发布时间】:2017-03-16 07:05:30
【问题描述】:

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

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

那么,我如何检测何时不应使用跳转图块(蓝线)填充空白区域以及何时应添加跳转图块(黄线)。

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

【问题讨论】:

    标签: algorithm random 2d generator concave


    【解决方案1】:

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

    伪代码:

    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 磁贴来编码所有变体。

    【讨论】:

    • 游戏的视角就像是老RPG,不是横向卷轴的平台游戏,“跳跃”更像是“滑翔”过区域(没有垂直/水平只有跳跃,只是向跳跃区域上方的方向滑行)
    • 啊,我用“垂直”表示南北,而不是上下。我会调整我的答案以使用不太容易混淆的术语。
    • 哦,这些术语有点误导。哦,好的,现在我明白了。谢谢,这似乎是个好主意!
    猜你喜欢
    • 2020-09-19
    • 2021-11-10
    • 2014-06-21
    • 2014-05-21
    • 2011-03-27
    • 2010-09-10
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多