void Update() { if (targets.Count > 0) { int completeTarget = -1; Vector3 newPosition = targets[0].position; Quaternion newRotation = targets[0].rotation; for (int i = 1; i < targets.Count; i++) { targets[i].weight += Time.deltaTime * targets[i].speed; if (targets[i].weight >= 1f) { targets[i].weight = 1f; completeTarget = i; } newPosition = Vector3.Lerp(newPosition, targets[i].position, QuadraticStep.Calc(targets[i].weight)); newRotation = Quaternion.Lerp(newRotation, targets[i].rotation, QuadraticStep.Calc(targets[i].weight)); } if (localSpace) { transform.localPosition = newPosition; transform.localRotation = newRotation; } else { transform.position = newPosition; transform.rotation = newRotation; } if (completeTarget > 0) { targets.RemoveRange(0, completeTarget); } } }
void Update() { phase += Time.deltaTime * 1f; if (phase >= 1f) { enabled = false; RenderSettings.fog = false; flare1.localScale = new Vector3(flare1Scale, flare1Scale, flare1Scale); flare2.localScale = new Vector3(flare2Scale, flare2Scale, flare2Scale); } else { float quadraticPhase = QuadraticStep.Calc(phase); RenderSettings.fogStartDistance = Mathf.Lerp(near, 100, quadraticPhase); RenderSettings.fogEndDistance = Mathf.Lerp(far, 200, quadraticPhase); float flarePhase = QuadraticStep.Calc(Mathf.Min(phase * 2f, 1f)); float flare1Lerp = Mathf.Lerp(0f, flare1Scale, flarePhase); float flare2Lerp = Mathf.Lerp(0f, flare2Scale, flarePhase); flare1.localScale = new Vector3(flare1Lerp, flare1Lerp, flare1Lerp); flare2.localScale = new Vector3(flare2Lerp, flare2Lerp, flare2Lerp); } }