private IEnumerator FailedMatch(SetMaterialAndFlip m1, SetMaterialAndFlip m2) { GetComponent<AudioSource> ().clip = sounds [1]; GetComponent<AudioSource> ().Play (); yield return new WaitForSeconds(2); m1.FaceDown (); m2.FaceDown (); currentCard = null; blockInput = false; }
private IEnumerator MatchFound(SetMaterialAndFlip m1, SetMaterialAndFlip m2) { GetComponent<AudioSource> ().clip = sounds [2]; GetComponent<AudioSource> ().Play (); yield return new WaitForSeconds(2); Destroy (m1.gameObject); Destroy (m2.gameObject); matchCount++; currentCard = null; blockInput = false; }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0) && !blockInput) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit = new RaycastHit(); if(Physics.Raycast (ray,out hit, 200)) { GameObject hitObject = hit.collider.gameObject.transform.parent.gameObject; SetMaterialAndFlip m = hitObject.GetComponent<SetMaterialAndFlip>(); if(m) { m.FaceUp(); GetComponent<AudioSource> ().clip = sounds [3]; GetComponent<AudioSource> ().Play (); if(currentCard == null) { currentCard = m; } else if(currentCard != m) { blockInput = true; if(currentCard.GetMaterialIndex() == m.GetMaterialIndex()) { StartCoroutine(MatchFound(currentCard,m)); } else { StartCoroutine(FailedMatch(currentCard,m)); } } } } } if (matchCount == 10) { GetComponent<AudioSource> ().clip = sounds [0]; GetComponent<AudioSource> ().Play (); StartCoroutine(RestartGame()); } }