Создание Процедурной Анимации Смерти С Использованием Машин С Падающим Песком.

В этом посте я покажу, как я использовал машины с падающим песком для создания анимации смерти монстров в своей игре.

Бродяга .



Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Машины с падающим песком Машина с падающим песком клеточный автомат , который имитирует движение песчинок и создание песчаных куч под действием силы тяжести.

Правила просты:

  • Если ячейка под песчинкой пуста, то песчинка перемещается в пустую ячейку (см.

    (а)).

  • Если ячейка под песчинкой заполнена, а ячейка слева внизу или справа пуста, то песчинка перемещается туда (см.

    (б)).

    Если оба свободны, то один из них выбирается случайным образом.

  • В остальных случаях песчинка не движется.



Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Если вы хотите узнать больше о машинах с падающим песком, посмотрите это статья .

Используя эти простые правила, вы можете получить такую анимацию:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Создание анимации смерти Теперь давайте посмотрим, как можно использовать машины с падающим песком для создания анимации смерти монстров.

Принцип заключается в том, чтобы рассматривать непрозрачные пиксели изображения как песчинки и заставлять их падать, создавая кучу «песка» из трупа монстра.

Единственное отличие от правил, представленных выше, состоит в том, что каждая песчинка теперь имеет цвет. Вот что мы получаем:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Мне кажется, что этот результат не очень красив по двум причинам: куча слишком высокая и все падает с одинаковой скоростью.

Для решения проблемы высоты я использовал 3D клеточный автомат. Я нанес несколько слоев простого 2D клеточного автомата.

В исходном состоянии изображение находится в среднем слое, после чего песчинки могут перемещаться не только в нижнюю левую или нижнюю правую ячейки, но и в нижние ячейки предыдущего и следующего слоев:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Чтобы получить изображение из 3D-состояния клеточного автомата, я проецирую состояние в 2D, беря для каждой пары координат (i, j) первую непрозрачную ячейку, где переменная k перебирает слои.

Вот результат для трех слоев:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Для улучшения ситуации со скоростью я рандомизирую количество линий, на которые за один шаг попадает песчинка, в диапазоне от 1 до

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

.

На практике я использую

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

или

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

.

Вот результат:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

В то же время, когда монстр при падении раскалывается, образуются дыры.

Далее я пропускаю несколько кадров, чтобы анимация состояла ровно из 6 кадров.

Вот готовый результат:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

В среднем песчинки падают с постоянной скоростью, но гравитация должна их ускорять.

При желании вы можете пропустить больше кадров в конце анимации, чтобы имитировать ускорение.

Полный сценарий опубликован на сайте GitHub .

Удобно то, что если вам не понравится результат, вы можете запустить скрипт еще раз с другим сидом и получить новую анимацию.

Вот несколько примеров анимации летучих мышей:

Создание процедурной анимации смерти с использованием машин с падающим песком.
</p><p>

Теги: #Разработка игр #python #Игровой дизайн #анимация #анимации #pixelart #pixel art #клеточные автоматы

Вместе с данным постом часто просматривают: