В этом посте я покажу, как я использовал машины с падающим песком для создания анимации смерти монстров в своей игре.
Бродяга .
Машины с падающим песком
Машина с падающим песком клеточный автомат , который имитирует движение песчинок и создание песчаных куч под действием силы тяжести.
Правила просты:
- Если ячейка под песчинкой пуста, то песчинка перемещается в пустую ячейку (см.
(а)).
- Если ячейка под песчинкой заполнена, а ячейка слева внизу или справа пуста, то песчинка перемещается туда (см.
(б)).
Если оба свободны, то один из них выбирается случайным образом.
- В остальных случаях песчинка не движется.
Если вы хотите узнать больше о машинах с падающим песком, посмотрите это статья .
Используя эти простые правила, вы можете получить такую анимацию:
Создание анимации смерти
Теперь давайте посмотрим, как можно использовать машины с падающим песком для создания анимации смерти монстров.
Принцип заключается в том, чтобы рассматривать непрозрачные пиксели изображения как песчинки и заставлять их падать, создавая кучу «песка» из трупа монстра.
Единственное отличие от правил, представленных выше, состоит в том, что каждая песчинка теперь имеет цвет. Вот что мы получаем:
Мне кажется, что этот результат не очень красив по двум причинам: куча слишком высокая и все падает с одинаковой скоростью.
Для решения проблемы высоты я использовал 3D клеточный автомат. Я нанес несколько слоев простого 2D клеточного автомата.
В исходном состоянии изображение находится в среднем слое, после чего песчинки могут перемещаться не только в нижнюю левую или нижнюю правую ячейки, но и в нижние ячейки предыдущего и следующего слоев:
Чтобы получить изображение из 3D-состояния клеточного автомата, я проецирую состояние в 2D, беря для каждой пары координат (i, j) первую непрозрачную ячейку, где переменная k перебирает слои.
Вот результат для трех слоев:
Для улучшения ситуации со скоростью я рандомизирую количество линий, на которые за один шаг попадает песчинка, в диапазоне от 1 до
.
На практике я использую
или
.
Вот результат:
В то же время, когда монстр при падении раскалывается, образуются дыры.
Далее я пропускаю несколько кадров, чтобы анимация состояла ровно из 6 кадров.
Вот готовый результат:
В среднем песчинки падают с постоянной скоростью, но гравитация должна их ускорять.
При желании вы можете пропустить больше кадров в конце анимации, чтобы имитировать ускорение.
Полный сценарий опубликован на сайте GitHub .
Удобно то, что если вам не понравится результат, вы можете запустить скрипт еще раз с другим сидом и получить новую анимацию.
Вот несколько примеров анимации летучих мышей:
Теги: #Разработка игр #python #Игровой дизайн #анимация #анимации #pixelart #pixel art #клеточные автоматы
-
2015 Год И Тенденции Веб-Дизайна
19 Oct, 24 -
Оригами И Расширенная Реальность
19 Oct, 24 -
Покупка Загородной Недвижимости, Выбор Места
19 Oct, 24 -
Фсбук.ру
19 Oct, 24 -
Удобный Регулятор Громкости Для Пк
19 Oct, 24 -
Мобильный Телефон Учит
19 Oct, 24