コード例 #1
0
ファイル: Blinker.cs プロジェクト: ousttrue/UniVRMUtility
        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);
            }
        }
コード例 #2
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));
        }