public void SetDamageVignette(float intensity) { if (vignetteEffectState == VignetteEffectState.Inactive) { vignetteStartingIntensity = vignetteLayer.intensity.value; } vignetteTargetIntensity = intensity; vignetteEffectState = VignetteEffectState.Increase; }
// 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; } } }