Comment "souder" deux parties sur un mob complexe ?



  • Bonjour ! J'ai un mob avec un corps normal et un chapeau (jusque là, tout va bien), mais par contre, quand mon mob marche, le chapeau traîne derrière ! 😕 Mon chapeau est en deux parties, comme un chapeau melon.

    Voici le model de mon mob :

    // Date: 28/02/2014 20:40:33
    // Template version 1.1
    // Java generated by Techne
    // Keep in mind that you still need to fill in some blanks
    // - ZeuX
    
    package fr.yannblanc.aliceadsl.agriculcraft.mob;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.MathHelper;
    
    public class vendeurdegrainesModel extends ModelBase
    {
    // fields
    ModelRenderer head;
    ModelRenderer body;
    ModelRenderer rightarm;
    ModelRenderer leftarm;
    ModelRenderer rightleg;
    ModelRenderer leftleg;
    ModelRenderer chapeaubas;
    ModelRenderer chapeauhaut;
    
    public vendeurdegrainesModel()
    {
    textureWidth = 128;
    textureHeight = 64;
    
    head = new ModelRenderer(this, 0, 0);
    head.addBox(-4F, -8F, -4F, 8, 8, 8);
    head.setRotationPoint(0F, 0F, 0F);
    head.setTextureSize(128, 64);
    setRotation(head, 0F, 0F, 0F);
    body = new ModelRenderer(this, 16, 16);
    body.addBox(-4F, 0F, -2F, 8, 12, 4);
    body.setRotationPoint(0F, 0F, 0F);
    body.setTextureSize(128, 64);
    setRotation(body, 0F, 0F, 0F);
    rightarm = new ModelRenderer(this, 40, 16);
    rightarm.addBox(-3F, -2F, -2F, 4, 12, 4);
    rightarm.setRotationPoint(-5F, 2F, 0F);
    rightarm.setTextureSize(128, 64);
    setRotation(rightarm, 0F, 0F, 0F);
    leftarm = new ModelRenderer(this, 40, 33);
    leftarm.addBox(-1F, -2F, -2F, 4, 12, 4);
    leftarm.setRotationPoint(5F, 2F, 0F);
    leftarm.setTextureSize(128, 64);
    setRotation(leftarm, 0F, 0F, 0F);
    leftarm.mirror = false;
    rightleg = new ModelRenderer(this, 0, 16);
    rightleg.addBox(-2F, 0F, -2F, 4, 12, 4);
    rightleg.setRotationPoint(-2F, 12F, 0F);
    rightleg.setTextureSize(128, 64);
    setRotation(rightleg, 0F, 0F, 0F);
    rightleg.mirror = true;
    leftleg = new ModelRenderer(this, 0, 16);
    leftleg.addBox(-2F, 0F, -2F, 4, 12, 4);
    leftleg.setRotationPoint(2F, 12F, 0F);
    leftleg.setTextureSize(128, 64);
    setRotation(leftleg, 0F, 0F, 0F);
    leftleg.mirror = true;
    chapeaubas = new ModelRenderer(this, 35, 0);
    chapeaubas.addBox(0F, 0F, 0F, 12, 1, 12);
    chapeaubas.setRotationPoint(-6F, -8F, -6F);
    chapeaubas.setTextureSize(128, 64);
    setRotation(chapeaubas, 0F, 0F, 0F);
    chapeauhaut = new ModelRenderer(this, 58, 17);
    chapeauhaut.addBox(0F, 0F, 0F, 8, 2, 8);
    chapeauhaut.setRotationPoint(-4F, -10F, -4F);
    chapeauhaut.setTextureSize(128, 64);
    setRotation(chapeauhaut, 0F, 0F, 0F);
    }
    
    public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
    {
    setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
    head.render(par7);
    body.render(par7);
    rightarm.render(par7);
    leftarm.render(par7);
    rightleg.render(par7);
    leftleg.render(par7);
    chapeaubas.render(par7);
    chapeauhaut.render(par7);
    }
    
    private void setRotation(ModelRenderer model, float x, float y, float z)
    {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
    }
    
    public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity)
    {
    
    // TÊTE
    this.head.rotateAngleY = par4 / (180F / (float)Math.PI);
    this.head.rotateAngleX = par5 / (170F / (float)Math.PI);
    
    // CHAPEAU
    
    this.chapeauhaut.rotateAngleX = chapeaubas.rotateAngleX / (170F / (float)Math.PI);
    this.chapeauhaut.rotateAngleY = chapeaubas.rotateAngleY / (180F / (float)Math.PI);
    this.chapeaubas.rotateAngleY = head.rotateAngleY / (180F / (float)Math.PI);
    this.chapeaubas.rotateAngleX = head.rotateAngleX / (170F / (float)Math.PI);
    
    // BRAS DROIT
    this.rightarm.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 2.0F * par2 * 0.5F;
    this.rightarm.rotateAngleZ = 0.0F;
    
    // BRAS GAUCHE
    
    this.leftarm.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 2.0F * par2 * 0.5F;
    this.leftarm.rotateAngleZ = 0.0F;
    
    // JAMBE DROITE
    
    this.rightleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 1.4F * par2;
    this.rightleg.rotateAngleY = 0.0F;
    
    // JAMBE GAUCHE
    
    this.leftleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 1.4F * par2;
    }
    }
    

    Il faudrait donc que "chapeauhaut" soit soudé avec "chapeaubas", et "chapeaubas" avec "head"

    Merci d'avance ! 🙂

    Sur ce : chapi chapo ! (je sors)



  • tu sais en sorte que quand le mob bouge (modigie potion.xPOS, motion.yPos et motion.zPos) tu applique c'est même motion a ton chapeau



  • Euh.. je pas sûr de tout comprendre… :s



  • bha quand ton mob bouge, tu récupère les variable float des mouvement en x, y et z et tu les ajoute au mouvement de ton entité chapeau



  • Envoie le model techne de ton mob, et je t'explique l'erreur que tu as fait !



  • Voilà mon model Techne :
    0_1536505008680_Vendeur.tcn



  • Bien, je t'ai corrigé ton model techne, car il faut que les axes de rotation (boule bleue) soient au même endroit que les axes de rotation de la tête (toujours la boule bleue) il faut quelles soient toujours "fusionner" pour que, ici, le chapeau ait la même rotation que la tête.

    La "soudure" comme tu dis ce fait avec ces boules bleues !

    Model Techne corrigé: (tu verra les erreurs)
    http://puu.sh/8yBW8.tcn

    Model.java corrigé: (fait attention au .mirror qui bugent un peu)


  • Rédacteurs

    Si le sujet est résolu, merci d'éditer votre post (édition complète) et de changer le tag en [RESOLU]



  • ZeAmateis –-> J'aurai appris une chose : je pensais qu'il fallait juste "accrocher" une boule à une partie pour qu'elles soient assemblées ! 🙂 Merci !

    @Pchom ---> C'est fait ! 🙂



  • Je suis ravi de t'avoir aider et appris un truc !