Page 1 sur 2

Comment accéder à un array de GameObjects

Publié : 15 Juin 2023 17:41
par juliuson
J'ai affecté du code (le fichier rotateCube.cs) à un empty.

Le fichier rotateCube.cs possède un tableau (public) d'éléments de GameObjects (des cubes, spheres ou capsules).

Celui-ci dit de tourner un élémént du tableau de GameObjects dans le centre de la scène de 35° (avec la fonction rotateAround)

Comment accéder à un élément (gameobject) du tableau.

J'ai éssayé le code suivant:

prefabs[0].transform.RotateAround(Vector3.zero, Vector3.up, -35);

Mais rien ne tourne.

Merci pour votre aide,

A+

Re: Comment accéder à un array de GameObjects

Publié : 15 Juin 2023 19:08
par jmhoubre
Merci de publier ton code.

Peux-tu accéder à ton tableau ?
Tu l'as renseigné avec des gameObjects ?
Que dit la console ?
As-tu fait un Debug.Log(prefabs[0]) ?
Dans quelle fonction se trouve ta ligne de code ?

Re: Comment accéder à un array de GameObjects

Publié : 17 Juin 2023 12:42
par juliuson
J'ai crée un tableau prefabs dans un fichier (Main.cs), et je le copie comme cela:
GameObject [] prefabs;
 for (int i = 0; i < pentaminos.Length; i++)
        {
            prefabs = pentaminos;

        }


Puis je le charge dans un autre fichier (rotateRight.cs) comme cela:

Main.prefabs[0].transform.RotateAround(Vector3.zero, Vector3.up, -90);


Malheureusement, les GameObjects du tableau prefabs (ici le 0) ne tourne pas.

Si vous avez une idée de code pour faire tourner mes GameObjects?

Merci à vous,

A+

Re: Comment accéder à un array de GameObjects

Publié : 17 Juin 2023 20:11
par jmhoubre
Merci de publier tout ton code.

Peux-tu accéder à ton tableau ?
Tu l'as renseigné avec des gameObjects ?
Que dit la console ?
As-tu fait un Debug.Log(prefabs[0]) ?
Dans quelle fonction se trouve ta ligne de code ?

Re: Comment accéder à un array de GameObjects

Publié : 18 Juin 2023 13:55
par juliuson
Bonjour à tous,

Je déclare une variable de GameObjects (public static GameObject [] prefabs) que je place dans un fichier Main.

Le problème c'est que je crée un autre fichier (rotationDroite.cs).
dans lequel je place le code suivant:
void OnMouseDown()
        {
          Main.prefabs[0].transform.RotateAround(Vector3.zero, Vector3.up, -35);
        }


J'aimerais qu'un des pentaminos (le premier: d'index[0]) tourne (avec transform.RotateAround) si on clique sur une capsule (voir code ci-dessus).

Mais rien ne tourne.

Merci pour votre aide,

A+

Re: Comment accéder à un array de GameObjects

Publié : 13 Juil 2023 20:34
par juliuson
J'ai crée un fichier Rotate.cs qui comprend 3 variables publiques (cube1, cube2 et cube3 ).

Je cherche à faire une rotation de ces 3 variables (avec la fonction RotateAround) si on clique sur une capsule.

Pour cela je fais le code suivant:
    public GameObject pentamino1, pentamino2, pentamino3;

    private void OnMouseDown()
    {
        variable1.transform.RotateAround(Vector3.zero, Vector3.up, 35);
        variable2.transform.RotateAround(Vector3.zero, Vector3.up, 35);
        variable3.transform.RotateAround(Vector3.zero, Vector3.up, 35);
    }
Je fais un cliquer-déposer du code Rotate.cs vers le panel Inspector pour rendre publiques mes variables:

Je glisse cube1 dans variable1
Je glisse cube2 dans variable2
Je glisse cube3 dans variable3

Le problème, c'est que les cubes ne tournent pas.

Si vous avez des idées,

A+

Re: Comment accéder à un array de GameObjects

Publié : 14 Juil 2023 11:48
par jmhoubre
J'ai l'impression que tu ne maîtrises pas trop le vocabulaire que tu utilises. De plus tu t'acharnes à ne pas publier l'ensemble de ton code. Cela rend les choses compliquées...
J'ai crée un fichier Rotate.cs qui comprend 3 variables publiques (cube1, cube2 et cube3 ).
Ces variables sont absentes du bout de code que tu as fais l'effort de publier.
Je cherche à faire une rotation de ces 3 variables
Une variable ne peut pas pivoter. Un objet oui.
si on clique sur une capsule.
Tel que c'est codé, tout clic sur un objet muni d'un collider déclenchera la fonction OnMouseDown.
public GameObject pentamino1, pentamino2, pentamino3;
Ces 3 variables sont déclarées, mais pas utilisées. Bizarre.
Où est le nom de la classe ? Hérite-elle d'un MonoBehavior ?Le fichier contenant ce code est-il attaché à un objet ? Si oui, lequel ?
variable1.transform.RotateAround(Vector3.zero, Vector3.up, 35);
variable1, 2 et 3 ne sont pas déclarées ??? Et tu n'as pas d'erreur dans la console ?
Je fais un cliquer-déposer du code Rotate.cs vers le panel Inspector pour rendre publiques mes variables:
cliquer-déposer -> glisser-déposer ?
du code Rotate.cs -> du script Rotate.cs ?
vers le panel inspector : oui, mais quel objet est sélectionné (dont les propriétés sont affichées dans l'inspecteur) ?
cela ne rend pas publiques tes variables : cela affiche dans l'inspecteur des variables qui dans le code ont été déclarées publiques.
Le problème, c'est que les cubes ne tournent pas.
Tu m'étonnes...
Si vous avez des idées,
Suis des tutos pour débutants. Je te conseille cette série.
Quand tu poses une question sur le forum, et que quelqu'un te pose des questions, réponds-lui.

rotations de cubes avec des variables publiques

Publié : 26 Juil 2023 20:41
par juliuson
Salut à tous,

Voici le nouveau code:

Code : Tout sélectionner

public GameObject cube1, cube2, cube3;

    private void OnMouseDown()
    {
        cube1.transform.RotateAround(Vector3.zero, Vector3.up, 35);
        cube2.transform.RotateAround(Vector3.zero, Vector3.up, 35);
        cube3.transform.RotateAround(Vector3.zero, Vector3.up, 35);
    }
Le problème, c'est que les cubes ne tournent pas.

Votre aide est la bienvenue,

A+
 ! Message de : boubouk50
92 messages en 6 ans de présence et toujours pas de formatage correct de questions :
Les balises code ! Scrogneugneu !

Re: Comment accéder à un array de GameObjects

Publié : 27 Juil 2023 08:26
par boubouk50
As-tu mis des colliders sur tes cubes ? (Obligatoire pour détecter un OnMouseDown)
Tu cliques bien sur tes cubes ? (OnMouseDown se fait sur l'objet uniquement cliqué)
N'as tu pas quelque chose devant tes cubes qui empêcherait le clic ? (Un collider devant prendrait le clic avant le OnMouseDown)
Est-ce que tes cubes sont en static ? (ils ne peuvent pas bouger s'ils le sont)
As-tu des erreurs en console ?

Re: Comment accéder à un array de GameObjects

Publié : 31 Juil 2023 16:56
par juliuson
Les colliders sont mis par défaut sur chaque cubes (box collider).
Le OnMouseDown s'applique uniquement si l'on clique sur la capsule.

Le problème, c'est que lorsque l'on clique sur la capsule, les cubes ne tournent pas.

Merci à vous,

A+