Chute de méteorite de façon aléation sur une sphere (planete terre)

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Répondre
syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par syanis94 » 25 Juin 2020 12:50

Bonsoir,

S'il vous plait, je viens de crée une sphère qui représente la terre, je souhaite faire une chute de météorite de façon hasardeuse sur cette sphère, c'est a dire a chaque fois que je clique sur Space, une méteorite tombe quelque part sur la sphère, pour la faux gravity et tout c'est réglé, je veux juste savoir comment crée de façon hasardeuse des méteorite au tour de la sphère ?

merci beaucoup

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

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par Max » 25 Juin 2020 13:27

Bonjour,

une piste éventuellement : Random.onUnitSphere
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

syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par syanis94 » 25 Juin 2020 13:44

Tout d'abord merci beaucoup pour votre réponse

Vous pouvez m'expliquer svp comment sa fonctionne cette fonction ?

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

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par Max » 25 Juin 2020 14:00

Cette fonction renvoie la position au hasard (donc un Vector3) d'un point à la surface d'une sphère dont le rayon est égale à 1. Voir la doc dont je fournis le lien plus haut.
Après tu as une variante et qui est Random.insideUnitSphere, cette fois cela renvoie la position d'un point au hasard à l’intérieur d'une sphère.
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

syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par syanis94 » 25 Juin 2020 14:17

Je viens de voir la fonction et tout, mais j'ai pas bien saisi comment l'appliquer, j'ai pas compris ou je dois préciser la sphere ou les méthéoriques vont tomber, ni préciser lavariable de ma méthoérite ?

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

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par boubouk50 » 25 Juin 2020 14:26

Returns a random point inside a sphere with radius 1
Renvoie un point aléatoire dans une sphère de rayon 1.

Donc cela te renvoie une position, celle d'instanciation, là où la météorite apparaîtra.

Il te suffit donc d'interpoler en fonction du rayon de la sphère externe, là où la météorite apparaît (Stratosphère par ex). Ensuite, à toi de donner un vecteur directionnel pour sa chute. Par exemple, le vecteur (Position Météorite - Centre de la terre), pour tomber à la verticale.
"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

syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par syanis94 » 25 Juin 2020 14:27

J'ai essayé avec ce code :

Code : Tout sélectionner

    public Vector3 StartMet;
    public GameObject Cube;
   
    void Start()
    {
        StartMet = Random.insideUnitSphere;
    }

    
    void Update()
    {
        if(Input.GetButtonDown("Jump"))
        {
            Instantiate(Cube, StartMet, Quaternion.identity);
        }
    }
Ce script je l'ai appliqué sur la planete terre, après le problème c'est que le cube s'instantié sur la même position

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

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par boubouk50 » 25 Juin 2020 14:57

Bon... C'est pas un problème de compréhension de la fonction là, c'est ne pas savoir coder tout bonnement.
Pour cela, je te conseille d'aller voir sur OpenClassRoom ou autre pour apprendre la POO.

Sinon, dans l'idée, je t'explique ce que fait ton code.
Start: tu récupères une position comprise dans la sphère de rayon 1 et positionnée en (0,0,0)
Update: A l'appui de la touche "Jump", tu instancies un cube à la position récupérée.

A aucun moment, tu ne changes la position. Tu la récupères qu'une seule fois, il faut la récupérer à chaque fois pour en avoir une différente, donc cela se fait juste avant l'instanciation.
Ensuite, tu ne gères ni le rayon de la sphère ni le positionnement d'origine.
"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

syanis94
Messages : 31
Inscription : 11 Nov 2018 16:23

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par syanis94 » 25 Juin 2020 15:35

Je ne vais pas te mentir je n'ai rien compris de la dernière partie, pour le fait d'avoir donner une valeur à la variable dans le start() je confirme c'est une erreur bête, j'ai oublié le fait que sa devrait changé a chaque instantiation, il suffit donc de la copier coller dans le update(), après concernant le (Ensuite, tu ne gères ni le rayon de la sphère ni le positionnement d'origine.)j'ai rien pigé lol, je suis amateur, je suis pas pro frère, je suis en train d'apprendre, j'ai une petite idée d'un jeu sur ça, et je suis coincé a cause de ça

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

Re: Chute de méteorite de façon aléation sur une sphere (planete terre)

Message par boubouk50 » 25 Juin 2020 17:15

J'ai bien compris que c'était pas ton métier, tkt ;-)

Ce que je veux dire, c'est que ton besoin est celui d'un débutant en programmation, d'une logique toute simple. Si tu n'as pas les bases de la programmation alors tu vas galérer sans cesse, et soyons clair, je ne vais pas coder à ta place. C'est pour cela que je te dirige vers l'apprentissage des bases avant d'aller plus loin.
Maintenant, si l'explication n'est pas claire, c'est justement parce que tu manques de connaissance dans le domaine, alors ce n'est pas évident pour moi de te l'expliquer.
Je retente:
Ta planète ne sera pas forcément placée à l'origine du World (0, 0, 0) ni de taille inférieure à 1. Donc il faut adapter le Random.insideUnitSphere pour qu'il soit dépendant de la position de ta planète et de sa taille.
Par exemple, si ta planète est située en (10.25, -9.88, 3.7701), il faut que la position de l'objet instanciée soit dépendante de cette position. Donc il te faut faire une translation des coordonnées pour que le centre de création soit celui de la planète et pas celui du monde.
Ensuite, si ta planète fait 12 unité de rayon, il te faut également le prendre en compte, vu qu'ici cela te donne un résultat pour un rayon de 1 unité. Il faut donc donner une échelle de rayon, 12 donc (et peut être prendre en compte l'orbite donc ajouter une altitude).

Code : Tout sélectionner

Vector3 planetPosition; //Ici il te faut la position de ta planète
float radius; //Ici il te faut le rayon de ta planète
float orbit; //Ici l'altitude

//Ici tu multiplies la position unitaire par le rayon plus l'altitude pour donner la position de création en orbite de la météorite
//Ensuite tu additionnes la position de la planète, pour que l'origine de la sphère unitaire soit celle de la planète et pas l'origine du monde
StartMet = Random.insideUnitSphere * (radius+orbit) + planetPosition;

Instantiate(Cube, StartMet, Quaternion.identity);
"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

Répondre

Revenir vers « Scripting »