Вот пример такого распространения слизи. Вещество распространяется вокруг источника (в этом примере источником будет главное строение пришельцев).
Игра Starcraft, фиолетовое вещество называется ползучим.
Как такого рода распространение вещества будет достигнуто в двухмерной среде сверху вниз? Пересчитывать вещества по ходу и регенерировать эффект на лету каждый кадр или, вернее, использовать большую коллекцию плиток или что-то еще?
2d
algorithm
graphic-effects
Натан
источник
источник
Ответы:
Согласно вашему комментарию в других ответах, ваша проблема не в алгоритме роста ползучести, а в алгоритме, который выбирает, какую плитку ползучести использовать.
Какую плитку использовать, зависит от того:
Это означает, что вам нужно всего 16 плиток. Вы можете легко обратиться к ним с помощью битового поля. Вот некоторый псевдокод, который выберет другую плитку для каждого возможного созвездия ползучести:
Обратите внимание, что всякий раз, когда вы изменяете статус заражения плитки, все зараженные смежные плитки должны быть переоценены, потому что их соседство теперь изменилось.
Как разработать 16-ти плиточную графику, чтобы она хорошо сочеталась друг с другом - это (новый) вопрос для графического дизайнера.
источник
Некоторое время назад я читал стратегическую статью, в которой подробно объяснялось, как распространяется крип в Starcraft 2, я изо всех сил пытаюсь найти его сейчас, но я помню, что он довольно простой и работает примерно так
Самый простой способ отследить, к чему распространился ползучий тайл, - это, вероятно, просто флаг для каждого тайлса - не пытайтесь пересчитывать его каждый ход.
Время между «тиками» можно использовать для контроля скорости распространения крипа, в качестве альтернативы вы можете позволить крипу распространяться на несколько плиток в каждом «тике» или даже рандомизировать время между тиками.
Вышеприведенный алгоритм имеет эффект, заключающийся в том, что крип распространяется быстрее, если он заблокирован скалами с обеих сторон, однако вместо этого вы можете выбрать случайный тайл в пределах диапазона источника крипа, а затем распространять крип на этот тайл только в том случае, если он не является обрывом. ,
источник