Centré plusieurs GameObject

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
UnNulEnC#
Messages : 1
Inscription : 09 Fév 2025 20:59

Centré plusieurs GameObject

Message par UnNulEnC# » 09 Fév 2025 22:29

Bonjour,

Je suis entrain de crée un jeux de carte pour m'entrainé, j'essaye actuellement de faire une main toujours ordonnée et centré mais impossible d'arrivé a les centré, la dernière boucle me met toute les carte a la position 0 impossible d'allé en dessous.

merci d'avance pour vous réponse

Code : Tout sélectionner

        
   if(rearrange == true )
        {
            //Je récupère la liste des carde dans la main avec une boucle
            for (int i = 0 ; i < mainScript.handDeck.Count; i++)
            {
                //Je récupère les cartes a déplacé
                GameObject movingCard = GameObject.Find(mainScript.handDeck[i]);
                
                if (movingCard.name == mainScript.handDeck[0]) 
                {
                    //Je place la premiere carte a la position 0 de son parent
                    movingCard.transform.localPosition = Vector3.zero ;
                }

                //Si c'est une autre carte que la premiere
                if (mainScript.handDeck.Count > 1 && movingCard.name != mainScript.handDeck[0])
                {
                    
                    for (int n = 0; n < i; n++)
                    {
                        GameObject lastCardMoved = GameObject.Find(mainScript.handDeck[n]);
                        // Je place la carte actuel a traité a la meme position que la celle d'avant
                        movingCard.transform.localPosition = lastCardMoved.transform.localPosition;
                        // je deplace celle d'avant 
                        lastCardMoved.transform.localPosition -= lastCardMoved.transform.right * 0.080f;

                    }
                    for (int f = 0; f < i; f++)
                    {
                        GameObject moveAllCard = GameObject.Find(mainScript.handDeck[f]);
                        // Je deplace dans l'autre sens toute les cartes deja placé pour les centrer
                        moveAllCard.transform.localPosition += moveAllCard.transform.right * 0.080f;
                    }


                }

            }
            Debug.Log("ss");
            rearrange = false;

        }

    }
Sans la derniere boucle
Image
https://ibb.co/S4YbgDM1

Avec la dernière boucle
Image
https://ibb.co/mCJGz7D3

Ce que j'aimerais
Image
https://ibb.co/kgXpcdfW

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6465
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Centré plusieurs GameObject

Message par boubouk50 » 11 Fév 2025 10:09

Code : Tout sélectionner

for (int f = 0; f < i; f++)
{
   GameObject moveAllCard = GameObject.Find(mainScript.handDeck[f]);
   // Je deplace dans l'autre sens toute les cartes deja placé pour les centrer
   moveAllCard.transform.localPosition += moveAllCard.transform.right * 0.080f;
}
Ta condition est dépendante de i, donc de l'index de la carte.
Donc à chaque boucle de i, cette boucle va déplacer les cartes précédentes vers la droite.
Ainsi
quand i vaut 1, la carte 0 va être déplacée vers la droite.
quand i vaut 2, les cartes 0 et 1 vont être déplacées vers la droite.
etc.
Il en résulte que la carte 0 va être déplacée 4 fois, la 1 3 fois, la 2 2 fois, la 3 1 fois, et elles seront donc toutes au même endroit.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »