private IEnumerator MoveDoorCoroutine(bool direction, float duration) { float end; float start = transform.localPosition.x; float elapsedTime = 0; float scaledDuration; audio.volume = Toolbox.Instance.soundEffectsVolume; audio.mute = false; audio.Play(); if (direction) //meaning we're opening { if (leftDoor) { end = .8f; scaledDuration = Mathf.Abs(duration * ((start - 0.8f) / .8f)); } else { end = -.8f; scaledDuration = Mathf.Abs(duration * ((start + 0.8f) / .8f)); } } else //door is closing { end = 0f; scaledDuration = duration * ((Mathf.Abs(start) / .8f)); } Vector3 newposition = new Vector3(start, 0f, 0f); float ratio = elapsedTime / scaledDuration; while (ratio < 1f) { elapsedTime += Time.deltaTime; ratio = elapsedTime / scaledDuration; newposition.x = Mathf.Lerp(start, end, TweeningFunctions.EaseIn(ratio)); this.transform.localPosition = newposition; yield return(null); if ((gameObject.layer != 17) && !(gameObject.layer + 5 == Toolbox.Instance.GetPlayer().layer)) { audio.mute = true; } else { audio.mute = false; } } yield return(null); audio.mute = true; yield return(new WaitForSeconds(.5f)); audio.Stop(); }
private IEnumerator OutputVolumeRoutineOn() { var start = _volume; var end = 1f; var elapsed = 0f; var ratio = 0f; while (elapsed < routineDuration) { yield return(null); elapsed += Time.deltaTime; ratio = elapsed / routineDuration; _volume = TweeningFunctions.EaseIn(Mathf.Lerp(start, end, ratio)); } _volume = end; _coroutine = null; }
IEnumerator BeamShrink() { float end_scale = beam.transform.localScale.z; float duration = beamTime; float elapsed = 0; float ratio = 0; beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, end_scale); while (elapsed < duration) { yield return(null); elapsed += Time.deltaTime; ratio = elapsed / duration; beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, end_scale - (TweeningFunctions.EaseIn(ratio) * end_scale)); } beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, 0); //beam.SetActive(false); NewTarget(); }
IEnumerator BeamGrow() { float end_scale = Mathf.Abs(transform.position.y - target.transform.position.y); float duration = beamTime; float elapsed = 0; float ratio = 0; beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, 0); while (elapsed < duration) { yield return(null); elapsed += Time.deltaTime; ratio = elapsed / duration; beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, end_scale * TweeningFunctions.EaseIn(ratio)); } beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, end_scale); target.lifePhase = SpawnableMutation.LifeCycle.Death; state = DroneState.Destroying; }