[LUA] Système solaire procédural

6 réflexions au sujet de “[LUA] Système solaire procédural”

  1. C’est simple, mais je trouve ça joli 🙂

    Pour ton problème d’orbite, tu pourrais faire comme suit:
    1. Initialiser une variable à la moitié de la taille du soleil -> dist = taille_soleil / 2
    2. Choisir une taille pour ta nouvelle planète -> width = math.random(10, 20)
    3. Ajouter la moitié de sa taille à la variable -> dist = dist + (width / 2)
    4. Il te reste plus qu’à choisir aléatoirement une position entre ‘d’ et une valeur max pour avoir la nouvelle position -> pos = math.random(dist, dist + 100)
    5. Il suffit de repartir à l’étape ‘1’ pour ajouter une nouvelle planète en initialisant cette fois-ci la valeur de ‘d’ à la position de la dernière planète ajoutée + la moitié de sa taille: dist = pos + (width / 2)

    C’est comme ça que je verrai les choses 😉

  2. J’ai pensé a plusieurs methodes, dont la tienne, le probleme, c’est que tu reduis considerablement le facteur aletoire de la chose en apliquant des variables contraignantes.

    La solution la plus logique, mais pas la plus facile, serais de donner un random compris entre le rayon du soleil et la largeur de l’écran pour la distance soleil-planete, (c’est déjà le cas), mais créer une boucle qui vérifierais que la planète n’existe pas dans le périmètre planete.x – planete.rayon et planete.x + planete.rayon, si la condition renvois un résultat négative, alors tu peux placer la planète, sinon, tu trouves un nouveau random…

    Je ne sais pas si je suis clair .. ^^

  3. Oui je vois et c’est pas une mauvaise idée (ça revient à faire une détection de collision et c’est assez rapide avec des cercles) mais dans ce cas il faudrait peut-être prévoir un compteur pour limiter le nombre d’itérations afin d’éviter d’entrer dans une boucle infinie.

    Par exemple, si au bout de 5000 itérations (pour l’ensemble des planètes à placer) tu n’arrives pas à placer celle que tu as en main, alors la boucle de création s’arrête et le système solaire est créé. Le risque c’est d’avoir moins de planètes que prévues, mais ça renforce l’aspect aléatoire je trouve.

  4. C’est une bonne idée, tu ferais ca avec un simple for ou une while qui dis  » tant que la condition n’est pas remplis fais… ou alors avec un for qui parcours ma liste.

  5. J’utiliserai une boucle ‘while’ pour le nombre de création des planètes et une boucle ‘for’ pour la détection des collisions.

    while #listPlanets ~= nbPlanets do


    for _, p in ipairs(listPlanets) do

    Je me suis amusé à le faire donc si à un moment tu veux comparer ta version avec la mienne, n’hésite pas à demander 😉

Laisser un commentaire

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.