private IEnumerator CheckCollision() { while (m_IsStart) { //Check collide with anything in section for (int i = 0; i < m_Sections.Count; ++i) { if (!m_Sections[i].gameObject.activeSelf) { continue; } int result = m_Sections[i].IsCollide(m_Bird.transform); if (result == 1) { m_Score++; Utilities.Instance.DispatchEvent(Shell.Event.PlayAudio, "play_one", 3); Utilities.Instance.DispatchEvent(Shell.Event.OnUpdateScore, "score", m_Score); break; } if (result == -1) { Debug.Log("death"); m_Bird.Hit(result); OnGameOver(); break; } } //Check Floor float distance = Mathf.Pow(m_Floor.transform.position.y - m_Bird.transform.position.y, 2); if (distance <= 1.5f) { Debug.Log("Drop death"); m_Bird.Hit(-2); OnGameOver(); } yield return(new WaitForSeconds(0.3f)); } yield break; }