/// <summary> /// Détection de clics (BoxCollider2D) /// Grosse partie de la logique... /// </summary> private void OnMouseDown() { if (!locked) // blocage si mouvement en cours { if (name.StartsWith("fil")) { Debug.Log(tours[indice].Peek() + " " + value); if (tours[indice].Peek() == value && pointeurFil != this) // nv pointeur { GetComponent <Rigidbody2D>().gravityScale = 0f; coords[1] += 6f; locked = true; // sélection fil => blocage Debug.Log(pointeurFil == null); if (pointeurFil != null) // ancien pointeur { pointeurFil.GetComponent <Rigidbody2D>().gravityScale = 1f; } pointeurFil = this; } } if (name.StartsWith("pic")) { if (pointeurFil != null) { int indiceTour; switch (name) { case "pic1": indiceTour = 0; break; case "pic2": indiceTour = 1; break; case "pic3": indiceTour = 2; break; default: indiceTour = -1; break; } if (pointeurFil.indice != indiceTour && (tours[indiceTour].Count == 0 || tours[indiceTour].Peek() > pointeurFil.value)) { tours[indiceTour].Push(pointeurFil.value); tours[pointeurFil.indice].Pop(); pointeurFil.coords[0] += (indiceTour - pointeurFil.indice) * 6f; // mouvement pointeurFil.indice = indiceTour; locked = true; // sélection tour => blocage cp++; if (CP_MAX == cp) // défaite { SceneManager.LoadScene("BoomACAB"); } } } } } }
/// <summary> /// Détection de collision (Rigidbody2D) /// Ici, quand l'object tombe sur le sol, reset du pointeurFil (pour avoir à le resélectionner). /// </summary> /// <param name="collision"></param> private void OnCollisionEnter2D(Collision2D collision) { if (pointeurFil != null && pointeurFil.GetComponent <Rigidbody2D>().gravityScale == 1f) { locked = false; // fin mouvement (bas / gravité) => déblocage pointeurFil = null; if (tours[2].Count == 4) // victoire { SceneManager.LoadScene("BombeACAA"); } } }