Пример #1
0
 public void SetDamageVignette(float intensity)
 {
     if (vignetteEffectState == VignetteEffectState.Inactive)
     {
         vignetteStartingIntensity = vignetteLayer.intensity.value;
     }
     vignetteTargetIntensity = intensity;
     vignetteEffectState     = VignetteEffectState.Increase;
 }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        // Screen shake //
        if (timer >= 0)
        {
            Vector3 pos = transform.localPosition;
            pos    = Vector3.MoveTowards(pos, targetPos, Time.deltaTime / singleShakeDuration);
            timer += Time.deltaTime;
            timerWithinSingleShake += Time.deltaTime;
            if (timer > duration)
            {
                timer     = -1;
                pos       = Vector3.zero;
                amplitude = 0;
                duration  = 0;
            }
            if (timerWithinSingleShake > singleShakeDuration)
            {
                timerWithinSingleShake = 0;
                PickNewPosition();
            }
            transform.localPosition = pos;
        }


        currentIntensity = vignetteLayer.intensity.value;

        // Damage vignette //
        if (vignetteEffectState == VignetteEffectState.Increase)
        {
            float vignetteIntensityOvershoot = Mathf.Max(vignetteTargetIntensity + vignetteIntensityExtraOvershoot, vignetteIntensityMinOvershootTarget);
            vignetteLayer.intensity.value += (vignetteIntensityOvershoot - vignetteStartingIntensity) * Time.deltaTime / vignetteIncreaseDuration;
            if (vignetteLayer.intensity.value >= vignetteIntensityOvershoot)
            {
                vignetteEffectState           = VignetteEffectState.DecreaseFromOvershoot;
                vignetteLayer.intensity.value = vignetteIntensityOvershoot;
                vignetteStartingIntensity     = vignetteIntensityOvershoot;
            }
        }
        else if (vignetteEffectState == VignetteEffectState.DecreaseFromOvershoot)
        {
            vignetteLayer.intensity.value -= (vignetteStartingIntensity - vignetteTargetIntensity) * Time.deltaTime / vignetteDecreaseDuration;
            if (vignetteLayer.intensity.value <= vignetteTargetIntensity)
            {
                vignetteEffectState           = VignetteEffectState.Inactive;
                vignetteLayer.intensity.value = vignetteTargetIntensity;
            }
        }
    }