希望这会足够清楚。
我有一张由瓷砖制成的 2d 地图,我希望“水”穿过这张地图。它从管道中流出到特定的瓷砖上,然后需要像水一样填充所有瓷砖才能到达另一个特定的瓷砖。我目前将地图输入到游戏中,每个图块都是一个节点,每个节点都连接到它周围的所有适当图块。我将节点存储在排序数组中,首先按 x,然后按 y。此外,一些瓷砖是“门”瓷砖,可以阻止水流过它们。这些是同一节点图块网格的一部分,仅在活动时被标记。
问题是我如何分散水。
最初,我让每根管道(滴水的)跟踪“当前”和“满”水瓦的列表,它会将水直接分散到“当前”瓦,然后将它们切换到“满”列表时合适的。“当前”列表通过获取已经“当前”图块的周围图块来扩展。无论如何,这很好用,水流很好,但我不知道如何使它与闸门一起工作,以便可以停止并重新允许水流(然后再次停止,等等。 ) 在特定点。
现在我有它,水倾倒到一个且只有一个瓦片中,然后当一个瓦片有太多水时,它会将水逐渐推到随机相邻的瓦片上(除非瓦片是一个活动门。)这个问题是水在已经填满的瓷砖周围“晃动”,而不是“向外流动”。它最终会到达那里,但流动不那么自然。
我的困境就这样结束了。
代码是用python编写的。
编辑:新想法。我可以让管道在节点中搜索合适的免费瓷砖以在每次更新时放置水,但这似乎非常低效——尤其是使用多个管道时。