- Home /
Pausing the game after player object gets destroyed
Hey guys, as the title says, I want to make it so that when the player game object gets destroyed, the game will then pause and bring up a screen (I've made one called GameOverScreen), however, I cannot seem to get my head around it. The screen displays however the game doesn't pause. Any idea what could be causing this? Here is my code:
  using UnityEngine; 
     using UnityEngine.UI;
     
      public class PlayerHealth : MonoBehaviour
      {
          public float m_StartingHealth = 100f;               // The amount of health each tank starts with.
          public Slider m_Slider;                             // The slider to represent how much health the tank currently has.
          public Image m_FillImage;                           // The image component of the slider.
          public Color m_FullHealthColor = Color.green;       // The color the health bar will be when on full health.
          public Color m_ZeroHealthColor = Color.red;         // The color the health bar will be when on no health.
          public GameObject m_ExplosionPrefab;                // A prefab that will be instantiated in Awake, then used whenever the tank dies.
          public Camera mainCamera;
          public Camera gameOverCamera;
          public GameObject GameOverMenu;
      
          private bool gameover = false;
          private AudioSource m_ExplosionAudio;               // The audio source to play when the tank explodes.
          private ParticleSystem m_ExplosionParticles;        // The particle system the will play when the tank is destroyed.
          private float m_CurrentHealth;                      // How much health the tank currently has.
          private bool m_Dead;                                // Has the tank been reduced beyond zero health yet?
      
          void Start()
          {
              GameOverMenu.SetActive(false);
          }
      
          private void Awake()
          {
              // Instantiate the explosion prefab and get a reference to the particle system on it.
              m_ExplosionParticles = Instantiate(m_ExplosionPrefab).GetComponent<ParticleSystem>();
      
              // Get a reference to the audio source on the instantiated prefab.
              m_ExplosionAudio = m_ExplosionParticles.GetComponent<AudioSource>();
      
              // Disable the prefab so it can be activated when it's required.
              m_ExplosionParticles.gameObject.SetActive(false);
          }
      
      
          private void OnEnable()
          {
              // When the tank is enabled, reset the tank's health and whether or not it's dead.
              m_CurrentHealth = m_StartingHealth;
              m_Dead = false;
      
              // Update the health slider's value and color.
              SetHealthUI();
          }
      
      
          public void TakeDamage(float amount)
          {
              // Reduce current health by the amount of damage done.
              m_CurrentHealth -= amount;
      
              // Change the UI elements appropriately.
              SetHealthUI();
      
              // If the current health is at or below zero and it has not yet been registered, call OnDeath.
              if (m_CurrentHealth <= 0f && !m_Dead)
              {
                  OnDeath();
                  mainCamera.transform.parent = null;
                  mainCamera.enabled = true;
                  gameOverCamera.enabled = false;
      
                  if (m_CurrentHealth <= 0f && !m_Dead)
                  {
                      gameover = !gameover;
                  }
                  gameover = !gameover;
      
                  if (gameover)
                  {
                      GameOverMenu.SetActive(true);
                      Time.timeScale = 0;
                  }
      
                  if (!gameover)
                  {
                      GameOverMenu.SetActive(false);
                      Time.timeScale = 1;
                  }
              }
          }
      
      
          private void SetHealthUI()
          {
              // Set the slider's value appropriately.
              m_Slider.value = m_CurrentHealth;
      
              // Interpolate the color of the bar between the choosen colours based on the current percentage of the starting health.
              m_FillImage.color = Color.Lerp(m_ZeroHealthColor, m_FullHealthColor, m_CurrentHealth / m_StartingHealth);
          }
      
      
          private void OnDeath()
          {
              // Set the flag so that this function is only called once.
              m_Dead = true;
      
              // Move the instantiated explosion prefab to the tank's position and turn it on.
              m_ExplosionParticles.transform.position = transform.position;
              m_ExplosionParticles.gameObject.SetActive(true);
      
              // Play the particle system of the tank exploding.
              m_ExplosionParticles.Play();
      
              // Play the tank explosion sound effect.
              m_ExplosionAudio.Play();
      
              // Turn the tank off.
              gameObject.SetActive(false);
          }
      }
 
use ;
  Time.timeScale = 0;
back to normal ;
  Time.timeScale = 1;
Answer by gaurangranoliya · Apr 13, 2016 at 11:41 AM
================== if (m_CurrentHealth <= 0f && !m_Dead) { OnDeath(); mainCamera.transform.parent = null; mainCamera.enabled = true; gameOverCamera.enabled = false;
               if (m_CurrentHealth <= 0f && !m_Dead)
               {
                   gameover = !gameover;
               }
               gameover = !gameover;
   
               if (gameover)
               {
                   GameOverMenu.SetActive(true);
                   Time.timeScale = 0;
               }
   
               if (!gameover)
               {
                   GameOverMenu.SetActive(false);
                   Time.timeScale = 1;
               }
           }
       }
================== This line of code put in a Update method because of your current health continues check when player hit.
Sorry, I'm not sure what you mean. I don't know what to do, wouldyou $$anonymous$$d showing me what you mean by printing how my whole code should look?
Your answer
 
 
             Follow this Question
Related Questions
My game keeps freezing 1 Answer
Pause Menu open/close on key 1 Answer
How to disable pausing on main menu drop down? 0 Answers
Restart Problem 1 Answer
How to show my cursor in Pause menu? 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                