Сьогодні будемо робити що-небудь легке. Що відмінно підійде початківцям, оскільки принцип гри простий, коду мало, нескладно розібратися і редагувати. А саме, скроллер, де екран буде рухатися постійно в одну сторону, конкретніше кажучи, знизу і догори. Але насправді тут є невелика хитрість, сам екран нікуди не рухається, переміщаються самі об'єкти і таким чином створюється ілюзія руху. Ігровий процес в такий. Гравець управляє персонажем, який може рухатися тільки вліво або вправо. Внизу в випадкових місцях з'являються блоки і рухаються вгору. На самому верху смертельні шипи, тому гравцеві треба встигати стрибати з блоку на блок, і спускатися вниз.
Створюємо новий 2D проект і приступимо. Для початку створимо керуючий скрипт, якої контролює ігровий процес, генерує блоки та інше. Отже, скрипт Game. вішаємо на порожній об'єкт:
player - префаб персонажа.
gameSpeed - швидкість з корою будуть рухатися блоки.
block - префаб основного блоку.
blockAlert - префаб блоку-пастки.
timeoutMin і timeoutMax - мінімальне і відповідно максимальне, значення часу очікування появи нових блоків.
offset - максимальне зміщення по Х і стартове по Y. для блоків.
gameOverMenu - менюшка, яка буде з'являться після програшу.
Меню GameOver як мінімум має містити дві кнопки, для виходу з гри і рестарту поточної сцени. Робити звичайно ж будемо з допомогою UI об'єктів. Просто додати пару Button і вказати для них відповідні функції, для кнопки виходу це Exit (). а для кнопки перезапуску це Restart (). Додаємо кнопок нову подію, перетягуємо в поле обробника, об'єкт зі скриптом, і в списку вибираємо функції:
Після, збираємо кнопки в групу і вказуємо отримані меню в скрипті.
Тепер зберемо префаб персонажа. Додамо на спрайт Circle Collider 2D і скрипт Player:
Скрипт дуже простий. Є функція відображення по горизонталі, щоб повертати "особа" спрайту в потрібну сторону. Відстежується зіткнення з треггером, для визначення програшу. Крім того, є функція OnBecameInvisible. яка спрацює якщо об'єкт виявиться за межами екрану.
Створення блоку. Тут може бути одна проблема, справа в тому що при використанні коллайдера боксового типу, наш персонаж буде чіплятися за кути і краю платформи. Тому ми скористаємося можливостями движка Unity і зробимо блок наступним чином. Перше, додаємо на спрайт блоку Box Collider 2D і ставимо галочку Used by Effector і відразу додамо ефектор Platform Effector 2D з настройками за замовчуванням:
Чим допоможе ефектор? Він зробить так щоб об'єкти не чіплялися за краї блоку і його кути, додає ковзання. Штука вкрай зручна.
На блок вішаємо скрипт Block:
Тут забезпечується рух блоку. Плюс, коду гравець потрапить на платформу, то він стає дочірнім до неї, це потрібно для того, щоб дати можливість нормально рухатися гравцеві в межах блоку. І функцію знищення платформу, після того, як вона пропадає з поля зору.
Префаб блоку-пастки полягає також з вище наведеного скрипта і одного коллайдера в режимі тригера, тег об'єкта вказуємо Finish. Верхні шипи теж робляться з тригера з таким-же тегом, але вже без скрипт зрозуміло, так як це статичний об'єкт.
В цілому, власне і все. Не дивлячись на простоту, при належному вмінні і деякої фантазії, можна зробити непоганий скроллер. Додати більше блоків, більше пасток, бонусів, зміна швидкості, гра на час і т.п. і т.д.
Завантажити проект по темі:
Ви не можете завантажувати файли з нашого сервера