Итак, я только что сделал простую «игру» о столкновениях, используя предоставленный вами метод, и все работает отлично.Но теперь, когда я смотрю дальше, я вижу некоторую избыточность в том, что вы предоставили, и ваш «ответ» немного сбивает с толку.
Но ваш первый сценарий показывает, что каждый раз, когда урон наносит урон игроку, он наносит урон.
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Player"))
{
HealthBarScript.health -= 20f;
}
}
И каждый раз, когда «Игрок» сталкивается с «врагом», он выполняет непобедимую проверку, которая должна работать.(Предполагается, что комментарии удалены).Но, как говорится в комментариях, урон игрока не наносит удар по структуре урона, но всегда (независимо от непобедимого) урон игроку наносится структурой.
if (!invincible)
{
if (col.gameObject.tag == "enemy")
{
// HealthBarScript.health -= 20f;
// health -= 20; // subtract 1 form your total health
invincible = true; // makes this whole function unusable since invincible is no longer false
StartCoroutine(Invincible()); // makes this whole function reusable since invincible is false again
}
}
}
IEnumerator Invincible()
{
if (invincible == true)
{
yield return new WaitForSeconds(2);
{
invincible = false;
}
}
Но при повторном ударе перед непобедимымпроверка истекает, сценарий на противнике все еще наносит урон.
У вас есть два сценария, наносящих урон, и только один выполняет непобедимую проверку.
Избавьтесь от разрушающего сценария на структурах, отметьте всеструктуры правильно, прокомментируйте сценарий на игроке, и вам будет хорошо идти.Или вы можете оставить сценарий на структурах урона и просто проверять, неуязвим ли игрок, делая этот бул статичным.
Также вы могли бы легко ответить на свой вопрос, используя стандартное использование Debug.Log ("что, черт возьми, происходит").Debug.Log должен быть вашим лучшим другом.