Exemplo n.º 1
0
    /// <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");
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
 /// <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");
         }
     }
 }