PowerUp timer not working when altering timeScale
I am so close to figuring this out! I am trying to make 2 powerups. One will slow down all objects on the screen and the other will speed up all objects. I am able to accomplish the slow down and speed up, but I cannot get the timescale to go back to normal and the timer does not appear to be working. I really need some help. I have done days of research and have not come up with a solution. I know there is Time.unscaledDeltaTime which I have tried using, but had no luck in making the powerup work the way I want.
Here is my code:
Code1:
 using UnityEngine;
 using System.Collections;
 
 public class PowerUpManager : MonoBehaviour {
 
     private  bool doublePoints;
     private  bool slowMo;
     private  bool fastMo;
 
     private  bool powerUpActive;
     private float powerUpLengthCounter;
 
     private ScoreManager theScoreManager;
 
     private float score;
 
     private float slowDown = Time.timeScale ;
     //private float slowDown = Time.unscaledDeltaTime ;
 
 
 
     // Use this for initialization
     void Start () {
         theScoreManager = FindObjectOfType <ScoreManager > ();
     }
     
     // Update is called once per frame
     void Update () {
 
         if (powerUpActive) {
 
             powerUpLengthCounter -= Time.unscaledDeltaTime;
 
             if (slowMo) {
 
                 //Time.unscaledDeltaTime = slowDown;
                 Time.timeScale = slowDown;
                 slowDown  = 0.5f;
 
                 
             }
         }
 
         if (powerUpLengthCounter <= 0) {
 
             //Time.unscaledDeltaTime = slowDown;
             Time.timeScale = slowDown;
             slowDown = 1f;
             powerUpActive = false;
 
         }
     
     }
 
     public void ActivatePowerUpSlowMotion(bool slow, float time, float effect){
 
         slowMo = slow;
         powerUpLengthCounter = time ;
         slowDown = effect;
 
         powerUpActive = true;
 
     }
 }
 
               Code 2:
 using UnityEngine;
 using System.Collections;
 
 public class PowerUp : MonoBehaviour {
 
     public bool doublePoints;
     public bool slow;
     public bool fast;
     public float speed=Time .timeScale ;
 
     public float powerUpLength;
 
     private PowerUpManager thePowerUpManager;
 
     // Use this for initialization
     void Start () {
         thePowerUpManager = FindObjectOfType <PowerUpManager > ();
     }
     
     // Update is called once per frame
     void Update () {
     
     }
 
     void OnTriggerEnter2D(Collider2D other){
 
         if (other.tag == "Player") {
             thePowerUpManager.ActivatePowerUpSlowMotion (slow, powerUpLength,speed ); 
         }
 
         gameObject.SetActive (false);
         Destroy(gameObject);
     }
 }
 
               I would appreciate any help.
Your answer
 
             Follow this Question
Related Questions
PowerUp Timer 0 Answers
C# how to make things happens Through time? 0 Answers
how can i take time value from timer (Asked again clearly) 2 Answers
Slow Down Powerup Help 0 Answers
Load scene after time 1 Answer