raR*_*aRa 6 simulation grid tiles
我有一个基于网格的游戏(平台游戏),我把所有东西都放在了瓷砖上.我有坚固和液体的瓷砖.我正试图找到一种很好的方法来使水砖以粗糙的方式模拟水.
目前我有现行系统:当水砖在另一个水砖上方添加时,它会在下面的水砖上加1.数字表示压力.
这就是目前的样子:
[0] <- This water tile has 0 in pressure.
[1] <- This water tile has 1 in pressure.
Run Code Online (Sandbox Code Playgroud)
如果我在底部附近添加另一个水砖,它会从左侧,右侧和上方搜索是否有水砖,并继承其周围的最大压力.
例:
[0]
[1][1]
Run Code Online (Sandbox Code Playgroud)
添加少量水砖后,这是一个更大的例子:
[0][0]
[1][1][1][1]
[2][2][2][2][2]
Run Code Online (Sandbox Code Playgroud)
然后我制作压力等于或大于1的每个水瓦片如果有自由空间则尝试向左/向右移动,然后将压力设置为0并检查是否可以从邻近的水瓦片中继承压力(如果有的话).
除了从顶部移除水瓦片的情况之外,该系统工作得非常好.
如果我从上一个示例中删除顶部水砖:
[1][1][1][1]
[2][2][2][2][2]
Run Code Online (Sandbox Code Playgroud)
然后我们有压力为1的顶行,现在应该有0,底行应该有1.
是否有一些更智能的系统我可以更好地实现这一点?
以下是限制:
每个图块只能检查其邻居图块.平铺可以定义任何功能.Tile可以有任何变量来存储数据.
你们能想出一个比我更好的系统吗?
我通常的测试案例是:
[]
[] should become [][]
[]
[]
[] should become [][][]
[]
[][][] should become [][][][]
Run Code Online (Sandbox Code Playgroud)
假设游戏运行了一段时间.
任何建议都会受到欢迎!
小智 0
也许你可以忘记压力(因为你并没有真正将它们用作压力)并简单地使用 bool tryMove 或类似的东西。
每个模拟步骤应分为两个子步骤:
瓷砖中的第一个循环:
瓷砖中的第二个循环:
我认为这应该可以解决你的问题。