示例#1
0
 public void Start()
 {
     Light = this.GetComponent<Light>();
     originalIntensity = Light.intensity;
     var shakeRandoms = this.GetRandoms(Steps, 0.5f, 0.91f);
     for (int i = 0; i < shakeRandoms.Length; i++)
     {
         if (i % 2 == 0)
         {
             shakeRandoms[i] = 0;
         }
     }
     lightFlickerer = new ValueTimerSequence<float>(this.GetRandoms(Steps, 0.05f, 0.15f), shakeRandoms);
     lightFlickerer.DetermineValue = s => s;
     lightFlickerer.Lerp = (a, b, t) => { return b; };
     lightFlickerer.FinishedCallback = () => { Light.intensity = originalIntensity; };
 }
示例#2
0
    void Start()
    {
        var shakeRandoms = this.GetRandoms(ShakeSteps, 1f, 359f);
        for (int i = 0; i < shakeRandoms.Length; i++)
        {
            if (i % 2 == 0)
            {
                shakeRandoms[i] = 0;
            }
        }
        shakeRandoms[shakeRandoms.Length - 1] = 0;
        cameraShaker = new ValueTimerSequence<Vector3>(this.GetRandoms(ShakeSteps, 0.02f, 0.05f), shakeRandoms);
        cameraShaker.DetermineValue = (seed) =>
        {
            if (seed == 0)
                return HomePosition;

            var r = Quaternion.AngleAxis(seed, Vector3.forward);
            var result = HomePosition + ((r * Vector3.up) * _strength);
            _strength -= (ShakeStrength * (1f / (float)ShakeSteps));
            return result;
        };
        cameraShaker.Lerp = Vector3.Lerp;
    }