Comment descendre un GameObject avec offsetY et offsetZ

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
juliuson
Messages : 123
Inscription : 03 Mai 2017 18:00

Comment descendre un GameObject avec offsetY et offsetZ

Message par juliuson » 17 Mars 2025 16:36

Coucou à tous,

Lorsque je clique sur une capsule (qui sert de bouton) le code affiche le pentamino U1 (GameObject) si on clique une fois sur la capsule.
Pareil pour les 3 autres pentaminos (U2, U3, U4).
Les pentaminos sont situés à la place d'un cube (positionné à un endroit dans le bas de la scène).

Le problème, c'est que si je fais un quatrième clic (OnMouseDown et OnMouseUp) le quatrième pentamino U4 apparait trop haut de 1 float.

J'ai beau changer les valeurs de offsetY et offsetZ, rien ne fait redecendre le pentamino U4 (lors du quatrième clic sur la capsule).
Pouvez vous corriger mon code:

Code : Tout sélectionner

    void MakePentaminoU()
    {
        // Désactiver tous les mini-pentaminos U avant de choisir celui qui sera affiché.
        foreach (var mini in minisPentaminosU)
            mini.SetActive(false);

        // Vérification de l'état du compteur et incrémentation.
        int index = counter % minisPentaminosU.Length; // Calcul de l'index en fonction du compteur

        // Sélectionner le pentamino à afficher.
        miniPentamino = minisPentaminosU[index];
        miniPentamino.SetActive(true);

        // Position de base à partir du premier cube de référence
        Vector3 position = cubes[0].transform.position;

        // Debug pour vérifier la position de départ
        int offsetY = 0; // Déplacement sur l'axe Y
        int offsetZ = 0; // Déplacement sur l'axe Z

        // Définir des décalages selon l'index
        switch (index)
        {
            case 0: // U0
            case 1: // U1
            case 2: // U2
                offsetZ = 1; // Décalage en Z pour U0, U1, U2
                break;
            case 3: // U3
                offsetY = 1; // Remontée de 1 en Y pour U3
                offsetZ = 1; // Décalage en Z
                break;
            case 4: // U4
                offsetY = -1; // Décalage en Y pour U4 (descente en Y)
                offsetZ = 1; // Décalage en Z
                break;
            default:
                break;
        }

        // Appliquer les décalages sur la position
        position += new Vector3(0, offsetY, offsetZ);

        // Appliquer la position finale calculée
        miniPentamino.transform.position = position;

        // Incrémenter le compteur pour le prochain clic
        counter++;
    }
Voici ce que je cherche à faire:

Image

Merci pour votre aide,

A+

Répondre

Revenir vers « Scripting »