Quantcast
Channel: Questions in topic: "power up"
Viewing all articles
Browse latest Browse all 49

PowerUp timer not working when altering timeScale

$
0
0
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 (); } // 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 (); } // 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.

Viewing all articles
Browse latest Browse all 49

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>