private IEnumerator UnFreezing(Movingplatform platform, float freezeTime) { yield return(new WaitForSeconds(freezeTime)); if (platform != null) { FreezeBullet.FrozenPlatform frozen = FreezeBullet.frozenPlatforms.FirstOrDefault(p => p.platform == platform); if (frozen.platform != null) { frozen.platform.TimeScale = frozen.unfrozenTimeScale; FreezeBullet.frozenPlatforms.Remove(frozen); } } }
public void StartUnFreeze(Movingplatform platform, float freezeTime) { StartCoroutine(UnFreezing(platform, freezeTime)); }
protected override void Collide(Collision2D other) { Rigidbody2D rb = other.gameObject.GetComponent <Rigidbody2D>(); if (rb) { if (frozenObjects.Contains(rb)) { rb.isKinematic = false; rb.velocity = Vector2.zero; rb.angularVelocity = 0; rb.constraints = RigidbodyConstraints2D.None; frozenObjects.Remove(rb); } else { //scaled.TimeScale = 0; rb.isKinematic = true; rb.velocity = Vector2.zero; rb.angularVelocity = 0; rb.constraints = RigidbodyConstraints2D.FreezeAll; frozenObjects.Add(rb); GameObject.FindWithTag("Player").GetComponentInChildren <TimeGun>().StartUnFreeze(rb, freezeTime); } return; } Movingplatform platform = other.gameObject.GetComponent <Movingplatform>(); if (platform) { FrozenPlatform frozen = frozenPlatforms.FirstOrDefault(p => p.platform == platform); if (frozen.platform != null) { frozen.platform.TimeScale = frozen.unfrozenTimeScale; frozenPlatforms.Remove(frozen); } else { frozenPlatforms.Add(new FrozenPlatform { platform = platform, unfrozenTimeScale = platform.TimeScale }); platform.TimeScale = 0; GameObject.FindWithTag("Player").GetComponentInChildren <TimeGun>().StartUnFreeze(platform, freezeTime); } return; } Orbit o = other.gameObject.GetComponent <Orbit>(); if (o) { if (frozenOrbits.Contains(o)) { o.enabled = true; frozenOrbits.Remove(o); } else { frozenOrbits.Add(o); o.enabled = false; GameObject.FindWithTag("Player").GetComponentInChildren <TimeGun>().StartUnFreeze(o, freezeTime); } } }