MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Particules lancées par une arme

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    7 Messages 2 Publieurs 419 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • CiolgamingC Hors-ligne
      Ciolgaming
      dernière édition par

      Bonsoir, je viens de finir le modèle 3D d’une de mes nouvelles armes, et je souhaiterait qu’elle lance des particules de flammes quand je fait clic droit mais je ne vois pas du tout comment les orienter, je sais juste comment la faire spawn, le code que j’utilise actuellement est :

      	public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
      		Random rand = new Random();
      		for(int i = 1; i <= 10; i++) {
      			worldIn.spawnParticle(EnumParticleTypes.FLAME, playerIn.posX, playerIn.posY + 1.4, playerIn.posZ, 0,0,0);
      		}
      		return super.onItemRightClick(worldIn, playerIn, handIn);
      	}
      

      Merci de votre réponse, et vous souhaite une agréable journée, voici donc à quoi cela ressemble actuellement :
      text alternatif
      text alternatif
      text alternatif

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Bonsoir,

        Les 3 derniers paramètres de la fonction spawnParticle sont la vélocité des particules (actuellement tu as 0, 0, 0).

        Tu peux jeter un œil à la classe EntityThrowable de Minecraft pour voir comment Minecraft donne la vélocité à ce type d’entité qui est utilisé notament pour la flèche. En reprenant un code similaire tu pourras orienter les particules dans la direction où le joueur regarde lors du clic droit.

        1 réponse Dernière réponse Répondre Citer 0
        • CiolgamingC Hors-ligne
          Ciolgaming
          dernière édition par

          Okay, je vais donc voir de ce côté, merci encore robin4002 🙂

          1 réponse Dernière réponse Répondre Citer 0
          • CiolgamingC Hors-ligne
            Ciolgaming
            dernière édition par

            Alors j’ai réussi à récupérer le yaw, mai le pitch n’a pas l’air de fonctionner, si vous avez une technique, vidéo le montrant : https://youtu.be/rdxq-wfR5ds

            Merci de votre aide 🙂

            Code :

            	@Override
            	public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
            		Random rand = new Random();
            		
                    float f = -MathHelper.sin(playerIn.getRotationYawHead() * 0.017453292F) * MathHelper.cos(playerIn.rotationPitch * 0.017453292F);
                    float f1 = -MathHelper.sin((playerIn.getRotationYawHead() + playerIn.rotationPitch) * 0.017453292F);
                    float f2 = MathHelper.cos(playerIn.getRotationYawHead() * 0.017453292F) * MathHelper.cos(playerIn.rotationPitch * 0.017453292F);
                    this.shoot((double)f, (double)f1, (double)f2, 1.2F, 1.2F);
                    this.motionX += playerIn.motionX;
                    this.motionZ += playerIn.motionZ;
                    for(int i = 1; i <= 20; i++) {
                		worldIn.spawnParticle(EnumParticleTypes.FLAME, playerIn.posX, playerIn.posY + 1.4, playerIn.posZ, motionX, 0, motionZ);
                    }
            		
            		
            		return super.onItemRightClick(worldIn, playerIn, handIn);
            	}
                
               public void shoot(double x, double y, double z, float velocity, float inaccuracy)
               {
            	   Random rand = new Random();
                   float f = MathHelper.sqrt(x * x + y * y + z * z);
                   x = x / (double)f;
                   y = y / (double)f;
                   z = z / (double)f;
                   x = x + rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   y = y + rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   z = z + rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   x = x * (double)velocity;
                   y = y * (double)velocity;
                   z = z * (double)velocity;
                   this.motionX = x;
                   this.motionY = y;
                   this.motionZ = z;
                   float f1 = MathHelper.sqrt(x * x + z * z);
               }
            
            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Je n’ai pas compris pourquoi tu as fait des variables locals motionX , motionY et motionZ.

              Utiliser la variable f1 à la place de 0 ne fonctionne pas pour y ?

              Et sinon, si tu veux faire une boucle for 20 fois, vaut mieux ajouter un peu de random car là tes 20 particules sont exactement superposé, donc on en voit qu’une seule.

              1 réponse Dernière réponse Répondre Citer 0
              • CiolgamingC Hors-ligne
                Ciolgaming
                dernière édition par

                Yes c’était prévu, merci ça marche nickel, juste un souci de signe à régler et c’est good merci pour ton aide 😉

                1 réponse Dernière réponse Répondre Citer 0
                • CiolgamingC Hors-ligne
                  Ciolgaming
                  dernière édition par

                  Du coup ça fonctionne nickel, merci pour votre aide toujours au top 👍🙂

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB