protected IEnumerator BlinkRoutine() { while (true) { var waitTime = Time.time + Random.value * m_interVal; while (waitTime > Time.time) { if (Request) { m_request = false; break; } yield return(null); } // close var value = 0.0f; var closeSpeed = 1.0f / m_closeSeconds; while (true) { value += Time.deltaTime * closeSpeed; if (value >= 1.0f) { break; } BlendShapes.SetPresetValue(BlendShapePreset.Blink, value); yield return(null); } BlendShapes.SetPresetValue(BlendShapePreset.Blink, 1.0f); // wait... yield return(new WaitForSeconds(m_closingTime)); // open value = 1.0f; var openSpeed = 1.0f / m_openingSeconds; while (true) { value -= Time.deltaTime * openSpeed; if (value < 0) { break; } BlendShapes.SetPresetValue(BlendShapePreset.Blink, value); yield return(null); } BlendShapes.SetPresetValue(BlendShapePreset.Blink, 0); } }
IEnumerator RoutineNest(BlendShapePreset preset, float velocity, float wait) { for (var value = 0.0f; value <= 1.0f; value += velocity) { BlendShapes.SetPresetValue(preset, value); yield return(null); } BlendShapes.SetPresetValue(preset, 1.0f); yield return(new WaitForSeconds(wait)); for (var value = 1.0f; value >= 0; value -= velocity) { BlendShapes.SetPresetValue(preset, value); yield return(null); } BlendShapes.SetPresetValue(preset, 0); yield return(new WaitForSeconds(wait * 2)); }