Загрузка данных


using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class GameOverManager : MonoBehaviour
{
    [Header("Ссылки на интерфейс")]
    public GameObject deathScreen;     // Панель DeathScreen
    public Button restartButton;       // Кнопка RestartButton

    private AudioSource audioSource;
    private bool isDead = false;
    private Transform playerCam;
    private Transform monsterLookTarget;

    void Start()
    {
        if (deathScreen != null) deathScreen.SetActive(false);
        if (restartButton != null) restartButton.onClick.AddListener(RestartGame);
        
        audioSource = GetComponent<AudioSource>();
        if (Camera.main != null) playerCam = Camera.main.transform;
    }

    void Update()
    {
        // Если Олег погиб, плавно разворачиваем его камеру прямо в лицо монстру
        if (isDead && playerCam != null && monsterLookTarget != null)
        {
            // Направляем взгляд камеры на уровень груди/головы монстра
            Vector3 targetDir = (monsterLookTarget.position + Vector3.up * 1.5f) - playerCam.position;
            Quaternion targetRot = Quaternion.LookRotation(targetDir);
            playerCam.rotation = Quaternion.Slerp(playerCam.rotation, targetRot, 10f * Time.unscaledDeltaTime);
        }
    }

    // Метод запускается в момент поимки
    public void Trigger3DDeath(GameObject player, GameObject monster)
    {
        if (isDead) return;
        isDead = true;

        monsterLookTarget = monster.transform;

        // 1. Отключаем скрипт ходьбы и мыши игрока, чтобы он замер от ужаса
        if (player.TryGetComponent(out UnityStandardAssets.Characters.FirstPerson.FirstPersonController controller))
        {
            controller.enabled = false;
        }

        // 2. Включаем крик монстра
        if (audioSource != null) audioSource.Play();

        // 3. Через 2 секунды (пока монстр проигрывает 3D-анимацию атаки перед глазами) включаем экран смерти
        Invoke("ShowDeathScreen", 2.0f);
    }

    void ShowDeathScreen()
    {
        // Замораживаем физику и показываем мышку для кнопки
        Time.timeScale = 0f; 
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;

        if (deathScreen != null) deathScreen.SetActive(true);
    }

    void RestartGame()
    {
        Time.timeScale = 1f;
        SceneManager.LoadScene(SceneManager.GetActiveScene().name); 
    }
}