Hyper Casual игра на Unity с нуля. #3 Геймплей
Создадим класс, отслеживающий ввод игрока (на мобильных устройствах - свайпы, в редакторе - стрелки на клавиатуре).
AwesomeCompany/Common/Input/Direction.cs:
AwesomeCompany/Common/Input/SwipeDetector.cs:
Также создадим небольшой класс, который пригодится в дальнейшем для удобства при перемещении шара.
AwesomeCompany/Common/Input/Extensions.cs:
Изменим класс Cell. Добавим метод Complete для закрашивания. Закрашивать будем просто подменяя материал.
Создадим материал (Assets-> Create -> Material) и поменяем цвет.
Зайдем в префаб Floor, перетащим в Completed Material только что созданный материал, а в Mesh Renderer дочерний объект Plane.
Далее создадим класс для шара. Он подписывается на событие свайпа у SwipeDetector. При свайпе отправляет в GameController свое текущее положение и направление, получает в ответ список ячеек, которые нужно проехать до препятствия. Затем закрашивает их и телепортируется в последнюю (пока что не делаем плавное перемещение).
_/Scripts/Gameplay/Ball.cs:
Откроем префаб шара и добавим на него скрипт.
Изменим GameController, добавив методы получения ячеек и проверки завершения уровня. При старте уровня - активируем шар, чтобы можно было его двигать, при завершении - деактивируем и показываем окно LevelPassedWindow. Также добавляем метод Clear для удаления ячеек и шара со сцены.
Создадим класс окна "Уровень пройден". Сейчас добавим только кнопку выхода в главное меню.
_/Scripts/UI/Windows/LevelPassedWindow.cs:
Префаб окна создаем также, как создавали MainMenuWindow. Я добавил в него дополнительно текст и полупрозрачное изображение на фон.
Также изменим метод CreateBall в классе LevelFactory, чтобы он возвращал Ball вместо GameObject.
Запускаем игру и тестируем.
P.S. в статье не указывал, но местами старые переменные могут быть переименованы.
Все изменения в репозитории: github.com/sergeychemodanov/roller-splat.