Pull to refresh

Дневник Шарлатана. Моя первая игра на Unity. День 1-5

Всем привет. В связи последними событиями — ВУЗ, в котором я учусь, отправил на каникулы даже во время дистанционного обучения. Появилось много свободного времени и я решил попробовать пощупать геймдев, а конкретно юнити. Сразу скажу, что с программированием я никогда не имел дел и это есть мой первый опыт. Собственного из-за этого и «Дневник Шарлатана».

"


День 1


Скачал все необходимые штуки для геймдева — движок в виде юнити и визуал студио для написания скриптов.

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

День 2


На второй день я определился с жанром будущей игры — это будет Space Shooter на андроид. Думаю, для начала сойдет, учитываю что геймплей там особо не перегружен сложными деталями. Сначала думал двигать сам корабль по просторам сцены. Однако потом мне показалось, что я слишком все усложняю и сделал корабль статичным (к тому же я не знаю, насколько перемещение по сцене игры нагружает систему). Добавил стартовой площадке физику, благодаря которой после старта игры она «падала» вниз, имитируя взлет корабля персонажа.

Добавил в игру первых противников — ими стали астероиды, которые должны падать вниз, якобы на игрока. Опять же благодаря гайдам из интернета написал код, который заставляет астериоды в случайном месте появляться за пределами камеры и лететь вниз, на игрока. При столкновении коллайдера астероида с коллайдером персонажа происходил «гейм овер». Пришлось прописать код для рестарта.

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

"

День 3


Создал скрипт, который позволяет стрелять. Добавил его кораблю персонажа. Теперь нужно было создать возможность уничтожения астероидов. Для этого был написан код, который добавлял главному герою и астероидам здоровье. А попадание считывалось когда коллайдеры объектов сталкивались друг с другой (в том числе коллайдер пули, которая выпущена игроком).

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



День 4


На четвертый день добавил задний фон, который состоит из монотонного спрайта и текстуры мелких звезд. Заставил этот фон прокручиваться вниз, чтобы имитировать полет.

Создал корабли противников, которые появляются по подобию астероидов, однако имеют большую задержку между собой по времени спауна. Добавил к ним скрипты астероида, к тому же написал код, позволяющий им стрелять.

Захотелось добавить возможность собирания монет. Для этого сначала создал скрипт на основе кода для счета. Добавил все это дело также в Canvas. Чтобы собирать монеты, нужно добавить возможность их выпадания. Написал код, согласно которому перед командой «Destroy» противника просчитывалась возможность выпадания монет. Монеты были двух типов — номиналом в 1 и 3.

Теперь это стало походить на какую-никакую игру.



День 5


Пятый день выдался разгрузочным. Сделал так, чтобы корабли противников сначала «падали» в поле зрения камеры сверху, после этого прекращали падение и начинали стрелять, попутно меняя свое местоположение по оси X. Добавил звук выстрелам. Также подправил код в некоторых других аспектах, подстраивая игру под свои представления.



Итог


Возможно получилось немного сумбурно и я не знаю, на кого ориентирована эта запись и будет ли она кому-то интересна. Если стоит продолжать цикл записей — дайте знать в комментариях.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.