-22

Кодовый парусный корабль #4

Думаю, это завершающий пост про создание корабля, ибо в голову не лезет что еще можно добавить к кораблю. На этом буду считать модуль корабля практически полностью завершенным (будут, конечно, добавления в виде изменения спрайтов кораблей, некоторые мелкие правки, но они несущественны). Также я немного расскажу о планах разработки. Информация будет в конце поста.

Предыдущий пост: http://pikabu.ru/story/kodovyiy_parusnyiy_korabl_3_5094712
Гит для тех, кому лень читать: https://gitlab.com/open_sourse/pirate

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

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

Рассмотрим дополненный спрайт пули. Теперь он умеет взаимодействовать с объектам. Особенность в том, что данный способ взаимодействия отличается от тех способов, которые обычно приводятся в уроках. Зачастую в уроках делают проверку на тэг объекта, либо имя и тд.(но это жесть, ибо если будут добавлять новые объекты, то нужно будет прописывать взаимодействие), а тут мы проверяем есть ли у объекта компонент UniApp.General.Effects - это общий компонент для всех объектов, которые в принципе могут взаимодействовать с другими объектами. Т.е. у корабля есть такой компонент, у препятствия...ну, короче, у всех типов объектов на карте с которым можно будет взаимодействовать.

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

Вот сам вид эффекта. Тут есть делегат и экземпляр делегата. Сейчас он принимает аргумент пули, однако, в дальнейшем он будет принимать какой-то общий класс для всех классов, которые могут нанести урон.

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

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

Для дальнейшего рассмотрения обсудим абстрактные размышления о том как умирает корабль, ему наноситься урон и тд.
У каждого объекта класса есть HP, Wearout, armorValue и ArmorCount (вот снизу переработанный класс item, чтобы было более понятно).

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

Когда кораблю наносят урон, то отдельные части корабля получают урон HP и Wearout (это износ). Зачастую Wearout у корабля гораздо больше, чем HP, потому что HP можно восстановить до посещение порта, а Wearout - нет. И когда у корабля заканчивается хп в бою, то по Wearout отдельной части корабля наноситься двойной урон.

Однако, если у всех частей хп полностью заканчивается хп (а износ еще остается), то корабль считается уничтоженным. Также, если у корабля осталось хп, но кончилось Wearout, то он тоже считается уничтоженным (хотя тут это не видно, потому что я забыл это добавить).


Таким образом весь класс ShipEffect занимается принятием в себя урона, первую часть можно увидеть до обсуждения, а вторая вот:

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

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

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

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


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


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

Кодовый парусный корабль #4 Код, Программирование, Unity, Gamedev, Разработка игр, Гифка, Длиннопост

Т.е. мы создаем толчок, которые отталкивает все вражеские снаряды. Школа воды, например, умеет делать препятствия из льда и тд., школа воздух + воды может двигать корабль без паруса, например, школа земли + воды + воздуха, например, может быстро переместить корабль в указанную точку карты под водой ну и тд.

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


Всем спасибо за внимание!

Найдены возможные дубликаты

+1

Черт, фото скрипта пули забыл добавить, но вот:

Иллюстрация к комментарию
-1
Немного пошучу: "корованы" можно будет грабить? Тогда ждет успех игру!
раскрыть ветку 2
+1

Корабли и есть морские корованы. Еще будут эльфы, охрана дворца и злодей!

раскрыть ветку 1
-1
Джва года ждал!