Beispiel #1
0
    //Fades the time scale with a custom lerp
    private IEnumerator CustomLerp(LerpObject lerpObject)
    {
        float startingValue    = lerpObject.lerpedVariableGetter();
        float valueDistance    = lerpObject.targetValue - lerpObject.lerpedVariableGetter();
        float startingLerpTime = Time.realtimeSinceStartup;
        float endingLerpTime   = Time.realtimeSinceStartup + lerpObject.lerpDuration;

        while (lerpObject.instanceId == lerpObject.currentIdGetter() && Time.realtimeSinceStartup <= endingLerpTime)
        {
            float currentLerpTime = (Time.realtimeSinceStartup - startingLerpTime);
            float lerpedPosition  = lerpObject.lerpFunction(currentLerpTime, lerpObject.lerpDuration);
            lerpObject.lerpedVariableSetter((valueDistance * lerpedPosition) + startingValue);
            yield return(new WaitForSecondsRealtime(coroutineUpdateFrequency));
        }
        yield return(null);

        if (lerpObject.instanceId == lerpObject.currentIdGetter())
        {
            lerpObject.lerpedVariableSetter(lerpObject.targetValue);
            if (lerpObject.onFinishEvent != null)
            {
                lerpObject.onFinishEvent.Invoke();
            }
            if (lerpObject.onFinishFunction != null)
            {
                lerpObject.onFinishFunction();
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     completed = false;
     angle = PlayerPrefs.GetInt("Angle");
     if (Pause != null)
         Pause.SetActive(pause);
     count = 1;
     lerpObject = FindObjectOfType<LerpObject>();
     gestureListener = FindObjectOfType<GestureListener>();
     if (Application.loadedLevelName == "Menu")
     {
         lerpObject.enabled = true;
     }
     completed = true;
 }