@uriy99

Как сделать экран поражения корректно?

Доброго времени суток,я сделал экран поражения в канвасе,когда у игрока ноль здоровья(он появляется).У меня возникла проблема с уничтожением врага(когда у него здоровье <0,то он не исчезает из игры,а здоровье у него в минус уходит и появляется ошибка мол объект не назначен) так как к нему скрипт здоровья так же привязан,вот скрипт здоровья:
public class Health : MonoBehaviour 
{
 public GameObject GameOverScreen;
[SerializeField] private int health;
public Action <int , GameObject> OnTakeHit;
public int CurrentHealth
{
  get{return health;}
}
public int health1
{
 get {return health;}
 set
 {
      if (value >200)
      health =value;
 }
}


private void Start()
{
  GameManager.Instance.healthContainer.Add(gameObject,this);
  GameManager.Instance.collisionContainer.Add(gameObject,this);
}
public void TakeHit(int damage,GameObject attacker)
{
  
	health -= damage;
  if(OnTakeHit!=null)
  OnTakeHit(damage, attacker);
     if (health <= 0)
     { 
        if (!GameOverScreen.activeSelf)
        {
           GameOverScreen.SetActive(true);
           GetComponent<Player>().speed = 0;
        }
       health = 0;
            Destroy(gameObject);
            Time.timeScale = 0;
        }
    }

У меня был вариант написать отдельный скрипт здоровья для врага,но так как у меня всё здоровье зависит от GameManager,такой вариант мне не подходит...Нужно чтобы враг уничтожался без зависимости от объекта экрана поражения.Можете подсказать как исправить это недоразумение?
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
AnanasikDev
@AnanasikDev
Инди разработчик игр
Ну просто напишите условие, что если игрок умер, то включать экран поражения, если враг - то нет. Для этого либо создавать отдельный скрипт для игрока и врагов, либо же при вызове метода TakeHit указывать, кто именно вызывает его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы