// Update is called once per frame void Update() { float fTimeRemaining = BeatManager.GetTimeRemaining(); if (fTimeRemaining <= StartCountdownTime) { m_fElapsedTime += Time.deltaTime; m_pText_Timer.text = ((int)fTimeRemaining).ToString(); if (m_eState == State.Start) { m_eState = State.ScaleIn; m_fElapsedTime = StartCountdownTime - fTimeRemaining; } switch (m_eState) { case State.ScaleIn: { float fScale = m_fElapsedTime / ScaleInTime; transform.localScale = new Vector3(fScale, fScale); if (m_fElapsedTime >= ScaleInTime) { m_fElapsedTime = m_fElapsedTime - ScaleInTime; m_eState = State.Hold; } break; } case State.Hold: { if (m_fElapsedTime >= HoldTime) { m_fElapsedTime = m_fElapsedTime - HoldTime; m_eState = State.ScaleOut; } break; } case State.ScaleOut: { float fScale = Mathf.Lerp(1, 0, m_fElapsedTime / ScaleOutTime); transform.localScale = new Vector3(fScale, fScale); if (m_fElapsedTime >= ScaleOutTime) { if (fTimeRemaining <= 0.0f) { m_eState = State.Finished; } else { m_eState = State.ScaleIn; } m_fElapsedTime = m_fElapsedTime - ScaleOutTime; } break; } } } }