Unity, Playmaker, Zombie march и ничего не понятно

Unity, Playmaker, Zombie march и ничего не понятно

В прошлом посте я наобещал себе с три короба и поклялся всеми своими кепками, что буду вам забивать ленту своим шедевром визуального скриптинга. Кто не любит читать лор и вообще слаб в истории отечества, выглядело это как то так:

обещания(сдерживаютъся)
обещания(сдерживаютъся)

И если вместо IPO и покупки поляков я решил (посмотрев как вы активно комментите все и лайкаете посты) купить на замену ноуту нормальный мощный сильный здоровый большой красивый моноблок, то вот с первыми двумя пунктами я не обманул.

И скрин ниже тому подтверждение.

ОГО ВОТ ЭТО ДА
ОГО ВОТ ЭТО ДА

Теперь, когда мы покупаем юнита, появляется его иконка с ХП баром. Которая как и положено в RTS - в режиме реального времени показывает сколько юниту еще осталось. Максимально шедеврестично, особенно учитывая что я не хочу держать включенным ХП бар у юнита включенным над ним всегда. Не канон, имхо. Не тактикульно. Ну и еще важное назначение этих иконок - это конечно же поиск заплутавшегося бойца, но об этом я писал в прошлом посте.

Че по спавну

Предлагаю оторваться от бытовых забот и графония, и предаться утехам настоящей взрослой серьезной разработки игр без программирования. Ние я опишу и покажу красивые картинки как реализован спавн теперь на Playmaker. Описывать я буду то, что заняло у меня около 5 минут реального времени.

Для начала - юниты спавнятся объектом-спавнером. До вчера этот спавнер в виде куба метало из стороны в сторону по одной оси будто у него героиновая ломка. Делалось это одним экшеном в стартовом состоянии этого спавнера.

Шейк бейби шейк
Шейк бейби шейк

Если переводить с русского на понятный, то тут экшен имел возможность дергаться в пределах 20 ед. измерения по оси X в мировом пространстве без остановки. Но выглядело это как ракование и главной проблемой было в итоге то, что такая рандомизация ставила часто спавнер в близлежащие точки, и в итоге трупы спавнились все рядом и шли гуськом.

Ну и что это за "МАРШ ЗОМБИ" когда трупы идут гуськом. Полная ерунда.

Я решил это переделать, чтобы была реальная настоящая серьезная современная рандомизация. И запилил новый скрипт, отключив экшн с шейком.

Исус велел правильно именовать всё что видишь, во славу сатане разумеется.
Исус велел правильно именовать всё что видишь, во славу сатане разумеется.

Получилась магия, которой я поделюсь будто это тутор о том, как пользоваться Playmaker, чтобы получать удовольствие и не кончать. Это делать, имею ввиду.

Логика спавнера виделась простой. Ставлю объект на сцене где хочу(где надо), на инициализации определяю координаты спавнера, диапазон точек и получаю координаты возможных точек где спавнер может оказаться, заношу все координаты в массив, и врываюсь в новый безлимитный цикл перемещения спавнера в случайную из определенных точек с шагом в 2 секунды. Супер стабильно. Супер просто.

Делай раз
Делай раз

Так и делаем. Пилим первый стейт объекту - он стартовый, а значит инициализирующий. В этом состоянии(стейте) получаем позицию спавнера в Vector3(локальная переменная), смещаем координат на 20 ед. влево, тем самым определяя точку отсчета, и ставим туда спавнер. Заставялем его туда поставиться. Почему нельзя было сразу поставить в действительно стартовую позицию? Можно. Минус пара экшенов, вполне. Но я смотрю в светлое будущее пока пью темное пиво, и допускаю что в будущем мне нужно будет иметь контроль спавнера, который будет условно делить карту на два независимых коридора, поэтому сделал с извратом. Можно и правда было проще. Ну и в конце объявляем любимый int i=0. Все, стейт закончен.

if then else
if then else

Переходим во второе состояние и там все СУПЕР просто. В этом состоянии проверяем чему равно i. У меня оно должно превысить значение 20. Если меньше - переходим в стейт цикла, если больше - заканчиваем этот цикл и выходим в следующий стейт.

Что делает цикл? ниче не понятно и не очень интересно
Что делает цикл? ниче не понятно и не очень интересно

В стейте цикла все предельно просто. Берем Vector3 позицию спавнера стартовую, добавляем по оси движения (у меня это X) 2 единицы, добавляем это значение в наш локальный массив (переменную типа массив), докидываем i++, и возвращаемся в стейт с проверкой, чему у нас равно i.

Новый бесконечный цикл. Почти как бесконечное лето, только цикл.
Новый бесконечный цикл. Почти как бесконечное лето, только цикл.

И как только у нас i=20, мы пересаживаемся с лица одного цикла на лицо другого - тут все еще проще. Как только объект оказывается в этом состоянии, мы сообщаем ему ,что хотим, чтобы он взял из нашего массива случайный айтем (в нашем случае переменную Vector3) и поставился туда. И проследовал на следующий стейт, где по истечению 2 секунд, его вернет обратно сюда же к выбору переменной из массива.

СУПЕР ПРОСТО. Супер стабильно.

20 точек где может оказаться спавнер.
20 точек где может оказаться спавнер.

Теперь до бесконечности спавнер будет организованно шевелиться между этими точками. А из него будут лезть трупы. Не гуськом. А как положено.

тратил время, записывал видос, а вы не смотрите.

Шедевр, не правда ли? КУБ ДВИГАЕТСЯ.

Завтра понаедет моноблок, буду накатывать на него все игры, и возможно даже юнити, чтобы проект этот вот делать и дальше, чтобы окупить траты на моноблок. Пока что предподаж нет никаких и ничего, но совсем скоро вы будете читать блог молодого успешного миллионера, разбогатевшего на игре сделанной без программирования. Если будете читать такой - скиньте мне тоже.

99
7 комментариев

Чтобы фото моноблока было до завтра у меня на столе! Желательно до обеда!

3
Ответить

нужны координаты стола в Vector3

2
Ответить

не читал, но осуждаю за визуал скрипт

2
Ответить

спасибо, мы вам перезвоним

Ответить

А мог бы просто написать в 20 строчек кода

Ответить

да я и в космос мог бы полететь такто

Ответить