GamesQuest

Flappy Bird на Fusion 2.5 с применением физики

Создать flappy bird на clicktem fusion

Всем известна эта игра. Вроде, ничего особенного просто птичка прыгает через трубы. Но многие подсаживались и старались поставить свои рекорды. По слухам она принесла своему создателю 50.000 баксов за одну только баннерную рекламу. В App Store и Google Play быстро появилось множество клонов Flappy Bird. Если вам интересно как можно создать Flappy Bird на Fusion 2.5, то добро пожаловать!

Используемые объекты

Движение птички сделаны с помощью физики — настройки движка не менялись .

За все движения птички отвечает физический объект птички с красным глазом — это Physics — Bouncing Ball . Этот объект не видим.


В настройках указана высокая гравитация для того, что бы птичка резко прыгала и быстро опускалась.
За внешний вид птички отвечает обычный Static, который привязан к физической птичке

Как подпрыгивает птичка

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


По клику ЛКМ (либо tap-нажатие на мобильных устройствах) физическая птичка получает линейное ускорение linear velocity с силой 30, в направлении 90 градусов (вверх).

В добавок, птичка ещё получает импульс с силой 20 вверх, что бы придать резкость её прыжку.

 

Примечание. Высота прыжка отличается в Windows и в Android. В Window птичка прыгает чуть выше, чем надо, а в Androin в самый раз. Это зависит от среды выполнения движка Box2D. Я делал настройки под Android.

Направление птички изначально установлено на две точки выше от горизонтального.

 

Птичка должна наклонятся вниз когда падает, но с какого момента это должно происходить? Я определил этот момент как позицию на 15 пикселей ниже, чем начальная точка прыжка.

Точка из которой произошел прыжок

 

Позиция из которой происходит прыжок записывается как текущая координата Y в переменную ПозицияНаклона. Когда птичка падает ниже этой точки она начинает наклонятся вниз.

Чем больше значение Y тем ниже объект

 

Наклон происходит постепенно, проходя каждое направление от верхнего до нижнего. Что бы это событие сработало нужно отметить галочку Automatic Rotations в настройках птички.

Движение Труб

 

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

 

С помощью флагов я управляют последовательностью появления труб. В моей Flappy Bird используется три трубы. Они появляются друг за другом с одинаковым интервалом времени. Каждые 1.45 секунды появляется новая труба и движется со скоростью 15 справа налево, для этого я использовал тип движения Bouncing ball.

Время появления и скорость движения трубы выявлены в ходе долгих экспериментов )))

 

Каждая труба появляется справа за сценой в позиции X=315, а позиция Y определяется с помощью генератора случайных чисел — Random (110, 320), что бы просвет в трубе появлялся на разной высоте.

Я не использовал creat object, а сделал три трубы, потому что при создании каждой новой трубы на Android устройстве игра притормаживала. Копая этот вопрос, я выяснил, что такая проблема была не у меня одного. Мне кажется, что это из-за того, что труба довольно большой объект. В общем, от creat object пришлось отказаться и создать логику с тремя трубами.

Начисление очков

Очки должны начисляться в тот момент когда птичка пролетает трубу.

Довольно интересный момент — событие столкновения для обычных объектов срабатывает, только когда одна «картинка» сталкивается с другой, но столкновение физических объектов срабатывает даже когда физический объект пересекает прозрачную часть другого объекта!

Из этого следует логика — когда физическая птичка сталкивается с трубой, то присваиваем единицу к переменной трубы ПролетелТрубу. За тем. если птичка перелетает дальше координаты X этой трубы (середины трубы), то прибавляем одно очко и  ПролетелТруб снова обнуляется.

Трубы добавлены в группу

Если не использовать ПролетелТрубу, то очки будут прибавляться когда птичка просто врежется в трубу

Когда птичка сталкивается с трубой или полом

Если птичка сталкивается с трубами или полом, группа событий Игра деактивируется и активируются события Ударился.
При чем когда птичка сталкивается именно с полом, её направление сразу меняться на вниз.

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

Включенный flag 0 нужен, что бы оставить возможность вылететь за экран пока не появятся трубы.

После столкновения

Когда включается группа событий Ударился

останавливаются трубы и пол, обнуляется скорость птички и создается объект красной вспышки — он появляется при ударе.

Только анимация Disappearing — после неё объект удаляется

 

Заставка GameOver с лучшим результатом

Когда птичка падает на пол и красная вспышка уже исчезла:

GameOver появляется спустя 300 мс с момента падения птички на пол. Обязательно нужно проверять, что ЗначениеТаймера неравно нулю, а то GameOver будет появляться до того как птица достигнет пола. Доска рекордов появляется спустя 800 мс с момента падения птички на пол.

 

На доску рекордов подгружается лучший результат из сохраненного значения в объекте ini

Результат


Счетчик результата начисляется по 1 каждые 2 мс, пока не станет равен текущему результату (значению счетчика очков). И если этот результат выше предыдущего рекорда, то записываем его в ini как лучший.  И делаем видимой надпись new, которая изначально установлена как невидимая.

Если нужна дополнительная информация по объекту ini, она здесь

Медаль

Важно, что бы события здесь шли от меньшего к большему сверху вниз.

Далее создается искорка блика в случайном месте на медальке.

Три условия:

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

Попробовать ещё раз

Здесь задержка времени с переменной ЗначениеТаймера от объекта кнопки нужно только для того, что бы звук успел воспроизвестись до того как уровень перезапустится.

В самом начале

В начале игрок видит заставку, а птичка немного двигается вверх и вниз

У физической птички два типа движения. В начале используется движение под названием Stay — это тип движения Path

После того как игрок нажимает на экран,  тип движение птички меняется на Phisics — Buncing Ball под названием Flap, а заставка растворяется.

Для Android нельзя использовать Transitions, так что растворение сделано простой анимацией Disappearing.

За тем данное событие деактивируется и активируется группа событий Игра, которая описана выше.

Начальные настройки

В начале игры, когда мы видим заставку птичка не падает, по этому тип движение — Stay
Черный квадрат — объект для переменных:

Так же при старте игры сразу подключаем файл ini для сохранения рекорда.

Настройки для телефона

Размер экрана 288×511 на моем телефоне отображается как надо.

Выключены верхняя шапка и меню.

В настройках Android установлена ориентация — портрет (только вертикально).

Ну, и всё

Думаю, получилось довольно похоже на оригинал.

Поставь 5 звезд, если понравился мой пост, поделись ссылкой в соц.сети и спасибо за подписку!

 

FlappyBird.mfa

 

FappyBird.apk

Всем известна эта игра. Вроде, ничего особенного просто птичка прыгает через трубы. Но многие подсаживались и старались поставить свои рекорды. По слухам она принесла своему создателю 50.000 баксов за одну только баннерную рекламу. В App Store и Google Play быстро появилось множество клонов Flappy Bird. Если вам интересно как можно создать Flappy Bird на Fusion 2.5, то добро пожаловать! Используемые объекты Движение птички сделаны с помощью физики - настройки движка не менялись . За все движения птички отвечает физический объект птички с красным глазом - это Physics - Bouncing Ball . Этот объект не видим. В настройках указана высокая гравитация для того, что бы птичка резко прыгала…
Flappy Bird на Fusion 2.5 с применением физики
Flappy Bird на Fusion 2.5 с применением физики
2015-11-29
100

10

Рейтинг: 5 ( 1 голосов)