[1.7.10] Comment crée une sphère de particules



  • Bonjour, j'aimerais savoir comment crée une sphère de particules.

    Merci de votre aide.



  • Salut,
    ça demande des connaissances niveau lycée en mathématiques. Si tu connais l'équation d'une sphère, alors tu pourras obtenir les coordonnées sphériques de tes points x, y et z et ainsi faire spawn ta particule.
    Voilà qui devrait t'aider à y voir plus clair: http://www.geothalg.ulg.ac.be/cours1C/node91.html



  • Ok merci.



  • Bonjour,
    j'ai un code que j'utilise pour générer les vecteurs sous Sponge, mais tu peux peut être l'adapter pour Forge ?

    public static List<Vector3d> listeSphere(Vector3d vecteurCentre, int rayon) {
        List<Vector3d> liste = new ArrayList<Vector3d>();
    
        double pi = Math.PI;
        for (double i = 0; i <= pi; i += pi / (rayon*5)) {
            double radius = Math.sin(i);
            double y = rayon*Math.cos(i);
            for (double a = 0; a < pi * 2; a+= pi / (rayon*5)) {
                double x = rayon*Math.cos(a) * radius;
                double z = rayon*Math.sin(a) * radius;
    
                Vector3d vec = new Vector3d(vecteurCentre.getX() + x+0.5, vecteurCentre.getY() + y+0.5, vecteurCentre.getZ() + z+0.5);
                liste.add(vec);
    
            }
        }
        return liste;
    }
    

    Ensuite je récup la liste et je fais spawn les particules... J'espère que ça t'aidera, j'ai plein de code sur le calcul de position pour les particules.



  • Merci je vais essayer. Qu'est-ce qu'on met en pour l'argument "Vector3d vecteur centre" lorsque qu'on appelle la méthode ?



  • C'est simple pourtant que'est ce que tu ne comprends pas ? vecteurCentre c'est le centre de ta sphère et cela va calculer les position des particules de la sphère en fonction de ce fameux centre et du rayon en second param. Après avec la liste tu fais spawn les particules.

    Moi je code pour Sponge, donc je te donne pas l'exemple pour faire spawn les particules



  • Je sais pas quoi mettre en argument pour "vecteurCentre", lorsque j'appelle la méthode, j'ai essayé un nombre ça n'a pas marché. Pour l'appeler j'ai écrit :

    listeSphere(ici je sais pas quoi mettre, 5);
    

    Et ensuite je met quoi dans la méthode pour appeler la particule pour les coordonnées x, y et z et je la met où, dans la méthode ?



  • Voila comment moi je fais, c'est plus clair ?

                            List<Vector3d> listeSphere = Vecteurs.listeSphere(new Vector3d(100.5, 100.5, 100.5), 2);
                            for (int i = 0; i < listeSphere.size(); i++) {
                                // La position de chaque particule:
                                Vector3d value = listeSphere.get(i);
    
                               //code sponge pour afficher la particule. voir comment tu fais sous forge:
                                player.getWorld().spawnParticles(particleEffectR, value);
                            }
    

    Après comme je l'ai déja dit: tu demande un code pour faire une sphère de particule et moi jai plein de code comme celui la. A toi de voir ensuite comment l'utiliser sous Forge car moi je fais tout coté serveur.



  • On peut mettre que des doubles pour les coordonnées des particules, on ne peut pas mettre de Vecteur3d.



  • Ca fonctionne tu vois^^
    b1a0cd79-06ba-4812-af35-b70b5acc33a7-image.png


Log in to reply