Page 1 sur 1

[RÉSOLU][DB-ALL] Générer un système solaire en

Publié : 10 Déc 2018 23:02
par FriteCoca
Salut, je cherche à générer un système solaire en mais je ne trouve pas comment générer des planètes avec des cordonnées en valeur négative ( zone rouge, voir Screenshot )

Image

Voici le script :

Code : Tout sélectionner

for (int i = 0; i < _nbPlanet; i++)
                {


                    float tandom = Random.Range(2500, 100000);


                    if (i == 0)
                    {
                        Vector3 Planetpos = new Vector3(
                            this.transform.position.x + Random.Range(25000, 30000),
                            this.transform.position.y,
                            this.transform.position.z + Random.Range(25000, 30000));

                        GameObject Planet = Instantiate(planetModel, Planetpos, Quaternion.identity);
                        Planet.name = Planet + i.ToString();

                        planet.Add(Planet);

                        Planet.transform.parent = this.transform;

                    }
                    else if (_nbPlanet > 1 && i > 0)
                    {


                        Vector3 Planetpos = new Vector3(
                           planet[i-1].transform.position.x + tandom ,
                           this.transform.position.y,
                           planet[i-1].transform.position.z + tandom );


                        GameObject Planet2 = Instantiate(planetModel, Planetpos, Quaternion.identity);
                        Planet2.name = Planet2 + i.ToString();

                        planet.Add(Planet2);

                        Planet2.transform.parent = this.transform;


                    }

Re: [DB-ALL] Générer un système solaire en

Publié : 11 Déc 2018 12:29
par Sebela
Hello,

Il faudrait en dire un peu plus sur le but final pour qu'on puisse comprendre ce que tu cherches à faire et t'aiguiller sur une solution :]

Normal que tu n'aies des nouvelles planètes instanciées que vers le haut à droite, puisque :
- tu prends une valeur aléatoire positive tandom (entre 2500 et 100000)
- Pour chaque nouvelle planète tu te bases sur la position de la précédente à laquelle tu incrémentes cette valeur positive sur l'axe X et Z.
Si par exemple tu veux que les planètes partent dans la zone rouge tu peux faire :

Code : Tout sélectionner

Vector3 Planetpos = new Vector3(
                           planet[i-1].transform.position.x - tandom ,
                           this.transform.position.y,
                           planet[i-1].transform.position.z - tandom );
Si tu veux qu'elles partent de chaque côté, tu peux faire par exemple :

Code : Tout sélectionner

int sens = 1;
boucle for {
Vector3 Planetpos = new Vector3(
                           planet[i-1].transform.position.x + tandom*sens ,
                           this.transform.position.y,
                           planet[i-1].transform.position.z + tandom*sens );
sens = -sens;
}
Mais il va falloir nous en dire plus ;)

Re: [DB-ALL] Générer un système solaire en

Publié : 11 Déc 2018 23:04
par FriteCoca
Salut, j'ai finalement trouvé la solution, la voila :

Code : Tout sélectionner

			distance += Random.Range(15000, 100000);

                        float angle = Random.Range(0, 2 * Mathf.PI);

                        Vector3 Planetpos = new Vector3(
                            distance * Mathf.Cos(angle),
                            0,
                            distance * Mathf.Sin(angle));

Re: [RÉSOLU][DB-ALL] Générer un système solaire en

Publié : 12 Déc 2018 18:42
par Sebela
Effectivement, c'est aussi une solution :cote:
ça doit avoir le même effet que mon code juste au-dessus il me semble