У меня есть сетчатая игра (платформер), где я основывал все на плитки. У меня есть твердые и жидкие плитки. Я пытаюсь найти хороший способ сделать плитки для воды имитировать воду грубо.2D ситовое моделирование воды/жидкости (основано на платформенной плите)
В настоящий момент у меня есть действующая система: Когда водочная плитка добавляется над другой плитой для воды, она добавляет 1 к плите для воды ниже. Число указывает на давление.
Вот как это выглядит на данный момент:
[0] <- This water tile has 0 in pressure.
[1] <- This water tile has 1 in pressure.
если добавить еще воды плитку рядом с нижней один, он ищет слева, справа и выше, если есть какие-либо водные плитки и inheritates самый большой давление вокруг него.
Пример:
[0]
[1][1]
А вот больший пример после добавления нескольких воды плитки:
[0][0]
[1][1][1][1]
[2][2][2][2][2]
Затем я делаю каждый воду плитку, которая имеет давление, равное или больше, чем 1 попытки двигаться влево/вправо, если есть свободное пространство, затем установите давление на 0 и проверьте, может ли оно наследовать давление вокруг себя из соседних водоемов, если таковые имеются.
Эта система работает очень хорошо, за исключением случая, когда плитки для воды удаляются сверху.
Если удалить верхние плитки воды из последнего примера:
[1][1][1][1]
[2][2][2][2][2]
Тогда мы имеем верхний ряд с давлением 1, он должен иметь 0 там теперь и нижняя строка должна иметь 1.
Есть ли более разумная система, которую я могу реализовать, чтобы сделать это более правильным?
являются следующие ограничения:
Каждая плитка может только проверить его соседей плитки. Плитка может иметь любую функцию. Плитка может иметь любую переменную для хранения данных.
Можете ли вы, ребята, разработать лучшую систему, которая работает лучше, чем моя?
Обычный тест я делаю:
[]
[] should become [][]
[]
[]
[] should become [][][]
[]
[][][] should become [][][][]
Предполагая, что игра работает на некоторое время.
Любые предложения были бы более чем приветствуются!