// Use this for initialization void Start() { illusionMaterial.SetFloat("_Radius", 0.0f); illusionMaterial.SetFloat("_Feather", 0.0f); illusionMaterial.SetFloat("_AlphaMod", 1.0f); illusionMaterial.SetFloat("_Fade", 1.0f); illusionMaterial.SetTexture("_NoiseTex", noiseTexture); state = IllusionRevealerState.Faded; prevAngle = primaryCamera.transform.forward; prevPosition = primaryCamera.transform.position; }
// Use this for initialization void Start() { illusionMaterial.SetFloat("_Radius", 0.0f); illusionMaterial.SetFloat("_Feather", 0.0f); illusionMaterial.SetFloat("_AlphaMod", 1.0f); illusionMaterial.SetFloat("_Fade", 1.0f); illusionMaterial.SetTexture("_NoiseTex", noiseTexture); state = IllusionRevealerState.Faded; prevAngle = primaryCamera.transform.forward; prevPosition = primaryCamera.transform.position; }
// Update is called once per frame void Update() { angleChangeRate = Vector3.Angle(primaryCamera.transform.forward, prevAngle) / Time.deltaTime; characterSpeed = Vector3.Distance(primaryCamera.transform.position, prevPosition); switch (state) { case IllusionRevealerState.Faded: currentRadius = 0; currentFade = 1; if (Input.GetMouseButtonDown(1)) { timerStart = Time.time; state = IllusionRevealerState.RevealDelay; } break; case IllusionRevealerState.RevealDelay: if (!Input.GetMouseButton(1)) { state = IllusionRevealerState.Fading; } if (Time.time - timerStart >= delayTime) { state = IllusionRevealerState.Revealing; } break; case IllusionRevealerState.Revealing: if (Input.GetMouseButtonUp(1)) { state = IllusionRevealerState.Fading; } else { currentRadius += (revealRadius / fadeInTime) * Time.deltaTime; currentFade += (1 / fadeInTime) * Time.deltaTime; if (angleChangeRate > angleChangeDeadZone) { state = IllusionRevealerState.Fading; } else { currentFade -= (angleChangeRate / angleChangeFadeRate) * Time.deltaTime * 2; } if (characterSpeed > moveSpeedFadeTrigger * Time.deltaTime) { state = IllusionRevealerState.Fading; } else { currentFade -= (characterSpeed / (moveSpeedFadeTrigger * Time.deltaTime)) * Time.deltaTime * 1.25f; } currentRadius = Mathf.Clamp(currentRadius, 0, revealRadius); currentFade = Mathf.Clamp(currentFade, -1, 1); if (currentFade == -1) { state = IllusionRevealerState.Faded; } } break; case IllusionRevealerState.Fading: currentFade -= (1 / fadeOutTime) * Time.deltaTime; currentFade = Mathf.Clamp(currentFade, -1, 1); if (currentFade == -1) { currentRadius = 0; state = IllusionRevealerState.Faded; } break; } illusionMaterial.SetFloat("_Radius", currentRadius); illusionMaterial.SetFloat("_Feather", currentRadius * (featherRadius / revealRadius)); illusionMaterial.SetFloat("_Fade", currentFade); prevAngle = primaryCamera.transform.forward; prevPosition = primaryCamera.transform.position; }
// Update is called once per frame void Update() { angleChangeRate = Vector3.Angle(primaryCamera.transform.forward, prevAngle) / Time.deltaTime; characterSpeed = Vector3.Distance(primaryCamera.transform.position, prevPosition); switch (state) { case IllusionRevealerState.Faded: currentRadius = 0; currentFade = 1; if (Input.GetMouseButtonDown(1)) { timerStart = Time.time; state = IllusionRevealerState.RevealDelay; } break; case IllusionRevealerState.RevealDelay: if (!Input.GetMouseButton(1)) { state = IllusionRevealerState.Fading; } if (Time.time - timerStart >= delayTime) { state = IllusionRevealerState.Revealing; } break; case IllusionRevealerState.Revealing: if (Input.GetMouseButtonUp(1)) { state = IllusionRevealerState.Fading; } else { currentRadius += (revealRadius / fadeInTime) * Time.deltaTime; currentFade += (1 / fadeInTime) * Time.deltaTime; if (angleChangeRate > angleChangeDeadZone) { state = IllusionRevealerState.Fading; } else { currentFade -= (angleChangeRate / angleChangeFadeRate) * Time.deltaTime * 2; } if (characterSpeed > moveSpeedFadeTrigger * Time.deltaTime) { state = IllusionRevealerState.Fading; } else { currentFade -= (characterSpeed / (moveSpeedFadeTrigger * Time.deltaTime)) * Time.deltaTime * 1.25f; } currentRadius = Mathf.Clamp(currentRadius, 0, revealRadius); currentFade = Mathf.Clamp(currentFade, -1, 1); if (currentFade == -1) { state = IllusionRevealerState.Faded; } } break; case IllusionRevealerState.Fading: currentFade -= (1 / fadeOutTime) * Time.deltaTime; currentFade = Mathf.Clamp(currentFade, -1, 1); if (currentFade == -1) { currentRadius = 0; state = IllusionRevealerState.Faded; } break; } illusionMaterial.SetFloat("_Radius", currentRadius); illusionMaterial.SetFloat("_Feather", currentRadius * (featherRadius / revealRadius)); illusionMaterial.SetFloat("_Fade", currentFade); prevAngle = primaryCamera.transform.forward; prevPosition = primaryCamera.transform.position; }