public bool Play() { if (!isPlaying) { lerp = 0f; lerpRotation = 0f; isPlaying = true; time1 = 0f; phase = AnimationPhaseTypeEnum.PHASE1; if (particleSystem1 != null) { Destroy(particleSystem1.gameObject); } switch (_animation) { case LetterAnimationTypeEnum.FireWorks: StartFireWorksAnimation(); break; case LetterAnimationTypeEnum.FireWorks2: StartFireWorks2Animation(); break; case LetterAnimationTypeEnum.FireWorks3: StartFireWorks3Animation(); break; case LetterAnimationTypeEnum.FireWorks4: StartFireWorks4Animation(); break; case LetterAnimationTypeEnum.NONE: break; } return(true); } else { return(false); } }
private void HandleOnTrailAnimationStops() { switch (_animation) { case LetterAnimationTypeEnum.FireWorks: break; case LetterAnimationTypeEnum.FireWorks2: phase = AnimationPhaseTypeEnum.PHASE2; break; case LetterAnimationTypeEnum.FireWorks3: phase = AnimationPhaseTypeEnum.PHASE2; break; case LetterAnimationTypeEnum.FireWorks4: phase = AnimationPhaseTypeEnum.PHASE2; break; } }
private void PlayFrameFireWorksAnimation() { lerp += Time.deltaTime * speed; lerpRotation += Time.deltaTime * rotationSpeed; if (lerpRotation > 1f) { lerpRotation = 0f; } if (lerp < 1f) { letter.rectTransform.localPosition = Vector3.Lerp(startPosition, endPosition, lerp); letter.text.color = new Color(letter.text.color.r, letter.text.color.g, letter.text.color.b, Mathf.Lerp(0f, 1f, lerp)); letter.rectTransform.rotation = Quaternion.Lerp(Quaternion.Euler(0f, 0f, 0f), Quaternion.Euler(0f, 0f, 359f), lerpRotation); letter.text.fontSize = (int)Mathf.Lerp(letter.realFontSize * (1f - fontSizeNormalizedPercentDiff), letter.realFontSize, lerp); letter.rectTransform.eulerAngles = Vector3.Lerp(new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 359), lerp); } else { phase = AnimationPhaseTypeEnum.PHASE2; isPlaying = false; } }
private void PlayFrameFireworks4Animation() { switch (phase) { case AnimationPhaseTypeEnum.PHASE1: if (!trail.IsPlaying) { trail.Play(speed, startPosition, endPosition, true); PlayRandomSound(fireworkWhistles); } break; case AnimationPhaseTypeEnum.PHASE2: lerp += Time.deltaTime * speed2; time1 += Time.deltaTime; if (time1 < interval1) { if (lerp < 1f) { letter.text.fontSize = ((int)Mathf.Lerp((float)fontSize, (float)fontSize * (1f + fontSizeNormalizedPercentDiff), lerp)); letter.text.color = new Color(letter.text.color.r, letter.text.color.g, letter.text.color.b, Mathf.Lerp(1f, 0f, lerp)); } else { letter.text.fontSize = ((int)Mathf.Lerp((float)fontSize, (float)fontSize * (1f + fontSizeNormalizedPercentDiff), 1f)); letter.text.color = new Color(letter.text.color.r, letter.text.color.g, letter.text.color.b, Mathf.Lerp(1f, 0f, 1f)); lerp = 0f; } } else { letter.text.color = new Color(letter.text.color.r, letter.text.color.g, letter.text.color.b, 0f); phase = AnimationPhaseTypeEnum.PHASE3; time1 = 0f; lerp = 0f; } break; case AnimationPhaseTypeEnum.PHASE3: if (particleSystem1 == null) { particleSystem1 = Instantiate(particleSystem2Prefab, endPosition, Quaternion.identity).GetComponent <ParticleSystem>(); ParticleSystem.MainModule main = particleSystem1.main; Color randomColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f); main.startColor = new ParticleSystem.MinMaxGradient(randomColor); PlayRandomSound(fireworkShots); } else { time1 += Time.deltaTime; if (time1 >= 1f) { if (!particleSystem1.isPlaying) { Destroy(particleSystem1.gameObject); Stop(); } } } break; } }