centrer une grille dans la scène

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

centrer une grille dans la scène

Message par franceschi julien » 19 Nov 2022 19:22

Salut à tous,

j'ai crée la grille suivante (6 petits plans rouges gridCellPrefab(de taille size X, Y, Z = 0.8f) horizontaux et 10 verticaux) :

Code : Tout sélectionner

    private void CreateGrid()
    {
        for (int i = 0; i < 6; i++)
            for (int j = 0; j < 10; j++)
            {
                Vector3 worldPosition = new Vector3(i, 0f, j);  
                obj = Instantiate(gridCellPrefab, worldPosition, Quaternion.identity);
    }
Image

Cela montre bien une grille rectangulaire, malheureusement la grille n'est pas centrée dans la scène (horizontalement et verticalement).

Peut-être en modifiant le worldPosition?

Ou alors avec le Screen.width,
en utilisant la formule suivante:

Vector3 worldPosition = new Vector3((Screen.width - (rend.bounds.size.x * i)) / 2, 0f, ( Screen.height - (rend.bounds.size.y * j) / 2));

Mais cela ne marche pas.
Si vous avez des idées de code, je suis preneur (pour centrer ma grille dans la scène).

Dans l'attente d'une aide précieuse



.

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

Re: centrer une grille dans la scène

Message par jmhoubre » 19 Nov 2022 22:32

Bonsoir,

généralement, on calcule les dimensions en unités Unity de la grille (nombre de cellules x taille de la cellule), on divise par 2f (bien garder un float dans la division), et on met à jour un Vector3 offsetGrid avec ces dimensions, offset qui modifie les coordonnées des cellules.

Mais comme tu un prefab, tu dois utiliser sa taille en lieu et place de la taille de la cellule. Si ton prefab est un cube standard d'Unity, sa taille sera son scale. Si le prefab vient de blender ou maya, je ne sais pas.

Évite de mettre la taille de ta grille en dur dans le code :

Code : Tout sélectionner

[SerializeField] private int sizeX = 6;
[SerializeField] private int sizeZ = 10;
Il me semble plus lisible d'utiliser x et z plutôt que i et j dans ta boucle :

Code : Tout sélectionner

for (int x = 0; x < sizeX; x++)
	for (int z = 0; z < sizeZ; z++)
La grille sera centrée dans le monde, mais ne sera probablement affichée complètement dans la scène : il faudra zoomer ou dézoomer. Pour améliorer ce point, il faudra aussi jouer sur fieldOfView du composant Camera pour positionner correctement le niveau de zoom.

franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

Re: centrer une grille dans la scène

Message par franceschi julien » 20 Nov 2022 13:49

Salut à tous,

Code : Tout sélectionner

public GameObject cube;
Renderer rend;
rend  = cube.GetComponent<Renderer>();

Vector3 worldPosition = new Vector3((Screen.width - (rend.bounds.size.x * i)) / 2, 0f, ( Screen.height - (rend.bounds.size.y * j) / 2));
Je ne comprends pas pourquoi le rend.bounds.size.x renvoie 0.8 (scale X) et pas une valeur comme 25f ou 30f.
Mon prefab est un plan de size 0.8f (une case de la grille).
Mais je n'arrive pas à centrer la totalité de la grille (dans mon projet la grille peut être en 6x10, 5*15, 4*20 ou 3*20).

Merci pour votre aide,

A+

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

Re: centrer une grille dans la scène

Message par jmhoubre » 20 Nov 2022 15:14

Documentation a écrit : Bounds.size is the total size of the box. This is always twice as large as the extents.
size.x is the width, size.y is the height and size.z is the depth of the box. Note that size is given in world size.

franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

Re: centrer une grille dans la scène

Message par franceschi julien » 20 Nov 2022 15:59

Bonjour à tous,

Comme je l'ai déjà dit, je cherche à centrer ma grille dans la scène.
Cependant ma grille peut être de longueur et de largeur 6x10, 5x15, 4x20 ou bien 3*20.
C'est pour cela que j'aimerais centrer ma grille.

Voilà la position de ma camera.
Image

Merci pour votre aide,

A+

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

Re: centrer une grille dans la scène

Message par jmhoubre » 20 Nov 2022 20:40

Tu as lu ma première réponse ?

franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

Re: centrer une grille dans la scène

Message par franceschi julien » 20 Nov 2022 21:11

Salut,

Si j'ai bien compris, tu dis qu'il faut utiliser la formule suivante :

(nombre de cellules x taille de la cellule) / 2

Léger problème Unity affiche 1 pour la taille de la cellule.

Je ne comprends pas quand tu dis :
 et on met à jour un Vector3 offsetGrid avec ces dimensions, offset qui modifie les coordonnées des cellules.
Merci pour ton aide,

A+

Répondre

Revenir vers « Unity le logiciel »