problème de position

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
pingous
Messages : 4
Inscription : 29 Nov 2021 23:52

problème de position

Message par pingous » 30 Nov 2021 20:49

Bonjour tout le monde,
j'aimerais juste savoir pourquoi les 2 scripts suivant ne placent pas le GameObject Test au même endroit (il se décale sur l'axe des x je crois pour la deuxième méthode)

script 1:

Code : Tout sélectionner

GameObject test = GameObject.CreatePrimitive(PrimitiveType.Sphere);
test.transform.position = transform.position;
script 2:

Code : Tout sélectionner

GameObject test = GameObject.CreatePrimitive(PrimitiveType.Sphere);
test.transform.parent = transform;
test.transform.position = transform.position - transform.position;
Merci d'avance.

Avatar de l’utilisateur
jmhoubre
Messages : 601
Inscription : 05 Oct 2019 22:05

Re: problème de position

Message par jmhoubre » 01 Déc 2021 01:12

Bonsoir,

par curiosité, j'ai fait le test, les 2 sphères sont en (0, 0, 0), c'est-à-dire la position de mes empty porteurs des scripts.

Les deux scripts sont sur un objet qui a quelle position ?
Et pour les 2 scripts, quelle est la position de test ?

Tu te rends compte que faire :

Code : Tout sélectionner

test.transform.position = transform.position - transform.position;
c'est comme faire :

Code : Tout sélectionner

int a = 4 - 4;

pingous
Messages : 4
Inscription : 29 Nov 2021 23:52

Re: problème de position

Message par pingous » 01 Déc 2021 19:56

oui je sais bien que que transform.position - transform.position donne 0 dans tout les cas mais c'est juste que mon script de base est fait pour créer une icosphère autour de l'empty game object sur lequel est le script.

du coup je calcule les coordonnées des sommets de l'icosphère pour afficher les faces, quand je ne donne pas de parent à ces faces elles sont bien placées au bon endroit.
Mais quand j'essaie de définir le gameobject comme parent et que du coup je soustrais la position du gameobject parent pour que la position des faces ne changent pas et bien elles sont décalées.


J'ai fait le gameobject test pour voir si les deux méthodes suivantes donnaient la même chose:
-donner la position du gameobject vide à mon gemobject test sans lui donner de parent
-définir le parent du gameobject test comme le gameobject vide et mettre sa position à zero

Et du coup les deux scripts ne donnaient pas la même chose comme je l'ai dit dans mon premier post.

désolé si je n'étais pas clair j'essaie de l'être le plus possible,
Merci d'avance.

avec la première méthode: (la capsule entourée en rouge représente les positions successives du gamobject test)
Image

avec la 2e méthode:
Image

Avatar de l’utilisateur
jmhoubre
Messages : 601
Inscription : 05 Oct 2019 22:05

Re: problème de position

Message par jmhoubre » 02 Déc 2021 01:08

La je ne vois pas. Une fois de plus, ceux qui répondent ne sont pas devins.

pingous
Messages : 4
Inscription : 29 Nov 2021 23:52

Re: problème de position

Message par pingous » 03 Déc 2021 20:45

Bah mon problème c'est juste que quand je fais:

test.transform.position = transform.position;

et

test.transform.parent = transform;
test.tranform.position = Vector3.zero;

avec le gameobject vide porteur du script qui est en mouvement,
et bien ça ne donne pas la même chose.

Et ma question c'est : est-ce normal?
merci d'avance

Avatar de l’utilisateur
Max
Messages : 8532
Inscription : 30 Juil 2011 13:57
Contact :

Re: problème de position

Message par Max » 04 Déc 2021 18:03

Bonjour,
pingous a écrit :
03 Déc 2021 20:45
test.transform.parent = transform;
test.tranform.position = Vector3.zero;
tu as essayé en passant par localPosition ?

Code : Tout sélectionner

        test.transform.parent = transform;
        test.transform.localPosition = Vector3.zero;
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

pingous
Messages : 4
Inscription : 29 Nov 2021 23:52

Re: problème de position

Message par pingous » 05 Déc 2021 15:43

Non j'avais pas essayé et merci beaucoup ça marche maintenant :-D :-D

mais en fait j'ai trouvé comment résoudre le problème d'une autre façon entre temps.
C'est juste que le gameobject vide n'était pas en (0,0,0) au début.
Du coup j'ai juste à rajouter sa position initiale aux Gameobject enfants et tout va bien. ::d ::d

Répondre

Revenir vers « Scripting »