Как сделать хп врага?
Шалом. У меня появилась проблема.
- С помощью какого скрипта добавить урон от выстрелов? (и куда его добавить)
- Как сделать XP у врагов?.
- Как сделать хр у себя?
ПОЖАЛУЙСТА ОБЬЯСНЯЙТЕ ПОДРОБНО ИБО Я ТОЛЬКО НАЧАЛ Изучать.
Ответы (2 шт):
Автор решения: JIOX
→ Ссылка
Хп храните как число от 0 до 100 например. Когда пуля пересекает персонажа отнимаете какое-то количество. У себя или у врагов неважно.
Автор решения: Арман
→ Ссылка
Знаете про Принципы SOLID? Это сокращение. Нам интересует буква S который гласит:
Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
Следуя принципу:
- Создаём скрипт
DataилиDatabase. Там будут буквально ВСЕ данные об игре - количество врагов, имя главного героя, любимое блюдо главного героя, количество жизней и так далее. Там всё должно быть публичное чтобы менять данные с других скриптов. - Каждый элемент должен иметь свой скрипт, который будет контролировать взаимодействие именно с ним. Это не значит создать 3141592 скриптов, надо всё это делать аккуратно.
- Вам крайне будут полезна информация о событиях и обработчиках в Unity чтобы весь код не вложить в
Update
А теперь маленький пример:
- Data.cs
public static class Player
{
private static int _MinHealth = 0, _MaxHealth = 100, _Health = 100;
public static int Health
{
get
{
return _Health;
}
set
{
if(value < _MinHealth)
{
_Health = _MinHealth;
}
else if(value > _MaxHealth)
{
_Health = _MaxHealth;
}
else
{
_Health = value;
}
}
}
}
- Player.cs
private void OnColliderEnter(Collider other)
{
if(other.gameObject.tag == "Bullet")
{
Data.Player.Health -= Random.Range(20, 30);
Destroy(other.gameObject);
if(Data.Player.Health == 0)
{
Destroy(this);
Debug.Log("Проигрыш.");
}
}
else if(other.gameObject.tag == "Medkit")
{
Data.Player.Health += 25;
Destroy(other.gameObject);
Debug.Log("ОЗ восстановлено на 25 очков.");
}
}