PhotonNetwork.Instantiate retourne toujours la même position

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

PhotonNetwork.Instantiate retourne toujours la même position

Message par kosted » 09 Jan 2018 10:51

Bonjour tout le monde,
J'ai une erreur avec Unity qui me fatigue. J'utilise PhotonNetwork.Instantiate pour créer de nouveaux objets en ligne.
Dans une liste j'ai un tableau d'objets et dans une boucle j'instancie à chaque fois un nouvel objet avec une nouvelle position récupérée de la liste. Le problème est que à chaque fois, le PhotonNetwork.Instantiate me retourne un nouvel objet avec la position du tout premier objet de la liste. J'ai testé avec juste Instantiate de Unity et j'ai le même problème. Je ne sais pas du tout comment faire sachant que j'ai le même code sous IOS et ça fonctionne.

Quelqu'un aurait une piste ? Je suis dépassé. Merci d'avance

Code : Tout sélectionner

                GameObject position;
                for (int l = 0; l < 2; l++)
                {
                    for (int c = 0; c < 8; c++)
                    {
                        position = Humain.plateauHumain[l, c];
                        GameObject trou = PhotonNetwork.Instantiate(trouPrefab.name, position.transform.localPosition, Quaternion.identity, 0);
                      //ici, trou.transform.localPosition a TOUJOURS la position de Humain.plateauHumain[0,0], peut importe l'indice
                        
                        view = trou.GetComponent<PhotonView>().viewID;
                        gi = trou.GetComponent<GestionInteraction>();
                        gi.MajPositionTrou(view, canvas.name, position.name, l, c);
                    }
                }

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

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par boubouk50 » 09 Jan 2018 11:14

Salut,
cela ne viendrait pas du localPosition? As-tu comparer en console les valeurs qui sortent: position.transform.localPosition et trou.transform.localPosition?
La position locale dépend du parent, il faudrait donc d'abord parenter l'objet instancier avant de lui donner une position locale. Sinon, utiliser la position World.
Ne peux-tu pas bouger la position après l'instanciation pour voir?
"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

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par kosted » 09 Jan 2018 11:30

boubouk50 a écrit :
09 Jan 2018 11:14
Salut,
cela ne viendrait pas du localPosition? As-tu comparer en console les valeurs qui sortent: position.transform.localPosition et trou.transform.localPosition?
La position locale dépend du parent, il faudrait donc d'abord parenter l'objet instancier avant de lui donner une position locale. Sinon, utiliser la position World.
Ne peux-tu pas bouger la position après l'instanciation pour voir?
position.transform.localPosition par contre trou.transform.localPosition est toujours la position du tout premier position.transform.localPosition.

J'avais essayé de modifier la position du trou après instantiation
(trou.transform.localPosition = position.transform.localPosition)
. En local le résultat est satisfaisant, mais vu que ça se passe en réseau, sur l'écran de l'adversaire, les trous instancié n'ont pas la bonne position. Ils ont été instantiés avec l'erreur.

Je ne peux pas parenter l'objet durant l'instantiation, le méthode Instantiate ne me le permet pas, du coup je le fais après coup, dans la méthode MajPositionTrou où je lui dit de se placer en dessous de Canvas.

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

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par boubouk50 » 09 Jan 2018 11:46

Tu es en 2D?
D'après la doc, il n'est pas stipulé d'utiliser la position locale. J'utiliserai donc la position globale ou bien je ferai en plusieurs fois.
"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

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par kosted » 09 Jan 2018 12:14

boubouk50 a écrit :
09 Jan 2018 11:46
Tu es en 2D?
D'après la doc, il n'est pas stipulé d'utiliser la position locale. J'utiliserai donc la position globale ou bien je ferai en plusieurs fois.
Oui je suis en 2D. Je vais essayer la position globale alors. Quand tu dis en plusieurs fois, genre au lieu de faire une boucle, 16 lignes pour les 16 instanciations ?

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

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par boubouk50 » 09 Jan 2018 12:18

Non, au lieu de tout faire dans l'instantiate (), séparer les actions.
Tu instancies, tu parentes, tu copies-colle la position locale.
"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

kosted
Messages : 258
Inscription : 20 Avr 2015 18:21

Re: PhotonNetwork.Instantiate retourne toujours la même position

Message par kosted » 09 Jan 2018 13:08

boubouk50 a écrit :
09 Jan 2018 12:18
Non, au lieu de tout faire dans l'instantiate (), séparer les actions.
Tu instancies, tu parentes, tu copies-colle la position locale.
ok, je vais essayer de faire ça. Ca me parait une bonne solution. Avec cette méthode je suis certain que la position est modifiée après coup.

Répondre

Revenir vers « Scripting »