Résolu 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.tcnModel.java corrigé: (fait attention au .mirror qui bugent un peu)
:::
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 chapeaubas; ModelRenderer chapeauhaut; ModelRenderer head; ModelRenderer body; ModelRenderer rightarm; ModelRenderer leftarm; ModelRenderer rightleg; ModelRenderer leftleg; public vendeurdegrainesModel() { textureWidth = 128; textureHeight = 64; chapeaubas = new ModelRenderer(this, 35, 0); chapeaubas.addBox(-6F, -8F, -6F, 12, 1, 12); chapeaubas.setRotationPoint(0F, 0F, 0F); chapeaubas.setTextureSize(128, 64); chapeaubas.mirror = true; setRotation(chapeaubas, 0F, 0F, 0F); chapeauhaut = new ModelRenderer(this, 58, 17); chapeauhaut.addBox(-4F, -10F, -4F, 8, 2, 8); chapeauhaut.setRotationPoint(0F, 0F, 0F); chapeauhaut.setTextureSize(128, 64); chapeauhaut.mirror = true; setRotation(chapeauhaut, 0F, 0F, 0F); head = new ModelRenderer(this, 0, 0); head.addBox(-4F, -10F, -4F, 8, 8, 8); head.setRotationPoint(0F, 2F, 0F); head.setTextureSize(128, 64); head.mirror = true; 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); body.mirror = true; 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); rightarm.mirror = true; 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); leftarm.mirror = true; setRotation(leftarm, 0F, 0F, 0F); 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 = false; leftleg = new ModelRenderer(this, 0, 16); leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); leftleg.setRotationPoint(2F, 12F, 0F); leftleg.setTextureSize(128, 64); leftleg.mirror = true; setRotation(leftleg, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); chapeaubas.render(f5); chapeauhaut.render(f5); head.render(f5); body.render(f5); rightarm.render(f5); leftarm.render(f5); rightleg.render(f5); leftleg.render(f5); } 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 entity) { super.setRotationAngles(par1, par2, par3, par4, par5, par6, entity); this.head.rotateAngleY = par4 / (180F / (float)Math.PI); this.head.rotateAngleX = par5 / (180F / (float)Math.PI); this.chapeaubas.rotateAngleY = this.head.rotateAngleY; /// this.chapeaubas.rotateAngleX = this.head.rotateAngleX; //// Dans ces lignes on "soude" les parties du chapeau this.chapeauhaut.rotateAngleY = this.head.rotateAngleY; //// a la tête this.chapeauhaut.rotateAngleX = this.head.rotateAngleX; /// this.rightarm.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 2.0F * par2 * 0.5F; this.leftarm.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 2.0F * par2 * 0.5F; this.rightarm.rotateAngleZ = 0.0F; this.leftarm.rotateAngleZ = 0.0F; this.rightleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 1.4F * par2; this.leftleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 1.4F * par2; this.rightleg.rotateAngleY = 0.0F; this.leftleg.rotateAngleY = 0.0F; } }
:::
-
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 !