Narek Parazyan
Ученик
(103)
8 месяцев назад
Для достижения вашей цели вам нужно настроить логику управления дверьми и врагами в каждой комнате, а также создать механизм отслеживания убийства всех врагов. Вот примерный шаг за шагом подход:
Создайте скрипт управления дверьми:
Создайте новый скрипт, например, DoorController. Этот скрипт будет отвечать за открытие и закрытие дверей.
csharp
Copy code
using UnityEngine;
public class DoorController : MonoBehaviour
{
public Animator doorAnimator;
public void OpenDoor()
{
doorAnimator.SetBool("IsOpen", true);
}
public void CloseDoor()
{
doorAnimator.SetBool("IsOpen", false);
}
}
В этом примере предполагается, что у ваших дверей есть компонент Animator, управляющий анимацией открытия/закрытия.
Создайте скрипт для учета убийства врагов:
Создайте новый скрипт, например, EnemyManager. Этот скрипт будет следить за количеством врагов в комнате.
csharp
Copy code
using UnityEngine;
public class EnemyManager : MonoBehaviour
{
public int totalEnemies;
public DoorController doorController;
public void EnemyDied()
{
totalEnemies--;
if (totalEnemies <= 0)
{
// Вызываем метод открытия двери, когда все враги убиты
doorController.OpenDoor();
}
}
}
Вам нужно присвоить этот скрипт каждому объекту врага в комнате. Количество врагов задается в totalEnemies. Когда враг умирает, вызывается метод EnemyDied, и общее количество врагов уменьшается. Если общее количество врагов становится меньше или равно 0, то вызывается метод открытия двери.
Привяжите скрипты к объектам:
Присвойте скрипты DoorController и EnemyManager соответствующим объектам дверей и врагов в комнате.
Настройте анимацию двери:
В компоненте Animator для вашей двери создайте параметр IsOpen (тип bool) и настройте анимацию открытия/закрытия двери, используя этот параметр.
Триггер смерти врагов:
В скрипте врага, например, в методе обработки урона или смерти, вызывайте метод EnemyDied у соответствующего объекта EnemyManager:
csharp
Copy code
public class Enemy : MonoBehaviour
{
public EnemyManager enemyManager;
public void TakeDamage(int damage)
{
// Логика получения урона
if (health <= 0)
{
Die();
}
}
void Die()
{
// Логика смерти
// Вызываем метод EnemyDied у менеджера врагов
enemyManager.EnemyDied();
}
}
Теперь, при убийстве всех врагов в комнате, вызовется метод открытия двери. Убедитесь, что ваши объекты врагов и дверей правильно связаны с соответствующими скриптами и параметрами.