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.
↧