Продолжаем создавать свою первую компьютерную игру. Если вы только подключились, все что вам необходимо - изучить внимательно материалы предыдущих уроков.

Содержание всех постов:
- Вступительный пост
- Обучение разработке на Unity3D. Установка, настройка и описание окон
- Обучение разработке на Unity3D. Написание небольшого шутера. Разбираемся с террейном.
- Онлайн-обучение. Урок 3. Разработка игр на Unity3D: создание персонажа
- Онлайн-обучение. Урок 4. Разработка игр на Unity3D: продолжаем создавать персонажей
- Онлайн-обучение. Урок 5 Разбор скрипта Enemy
- Онлайн-обучение. Урок 6 Учимся стрелять
Сегодня мы добавим жизней врагам, добавим индикатор жизней, научим наше оружие наносить урон, а не только взрываться, а так же сделаем эффект смерти для Enemy. Поехали!
Добавим в скрипт Enemy дополнительную переменную, которая будет хранить количество жизней:

Теперь научим наше оружие наносить урон врагам. Изменяем скрипт Bullet:

Теперь мы уже можем убивать нашего врага, но это никак не видно визуально.


Теперь добавляем UI элемент внутрь Canvas под названием Image (UI -> Image), который настроим так, как на скриншоте. Это позволит нам с помощью изменения scale этого Image, изменять длину полоски.

Сразу же, по традиции, изменим цвет Image на зеленый. Так же нужно добавить дополнительное поле в скрипт Enemy, чтобы хранить в нем ссылку на Image:

Теперь нужно перетащить Image в новое поле Enemy. Сразу же задаем стартовое количество жизней. Я поставил 300:

Обновим теперь метод HitEnemy в скрипте Enemy, чтобы полоска с ХП обновлялась соответственно с текущим количеством ХП:

Теперь выберем префаб Bullet и добавим урона в поле Damage:

Почти все готово. Теперь при запуске, когда мы будем попадать по врагу, мы будем наносить ему 50 урона. При стартовом количестве ХП 300 надо попасть 6 раз по врагу, чтобы его убить. Нам осталось только сделать эффект смерти врага, так как сейчас после убийства ничего не происходит и никак не влияет на врага - он все равно продолжает двигаться на игрока. Добавляем ссылку на эффект смерти вот так:

А так же изменяем метод Die:

Осталось только выбрать эффект смерти. Я взял EffectExamples/FireExplosionEffects/Prefabs/BigExplosionEffect:

Готово. Можно запустить и посмотреть что получилось. Нужно проделать те же манипуляции с Enemy2. Так же, чтобы обновить префаб после изменения (добавления Canvas и т.д.) нужно выбрать префаб на сцене и нажать Apply в инспекторе:

После этого индикатор с ХП появится у всех Enemy на сцене, которые были созданы из этого префаба, что очень удобно.
Всем фана!
Автор поста @litovets
Авторские получил
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
polyideic, max-max, singa, sharps, oksana0407, vika-teplo, lokkie, polojayigor, amidabudda, galinakim, makcl
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!

Поддержите нас:
Спасибо за туториалы!
Разрешите позудеть по-старикански...
По гайдам C# публичные свойства должны именоваться в CamelCase. Приватные поля должны именоваться с символом подчеркивания в начале имени и с буквы в нижнем регистре:
private int _hitPoints
Да, я в курсе. Я уже не помню почему, но я решил тут их назвать с маленькой. :)
Возможно для однообразия с JS?
Когда пилишь водиночку, то некритично, а вот ежели планируется приобщить во вспоможение иных коллег, то лучше следовать гайдам данного языка.
Не, точно не поэтому. Возможно просто поленился. :)