Résolu Problème animation de mon entity
-
Bonsoir,
je rencontre un problème avec l’animation de mon entity, j’arrive pas a “rotate” la tête normalement elle pivote mais pas comme je veux et j’arrive pas a réglé se problème merci de votre aide.package com.AltisMine.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 Duck extends ModelBase { //fields ModelRenderer corps; ModelRenderer corps2; ModelRenderer patte2; ModelRenderer patte; ModelRenderer Ailes1; ModelRenderer ailes2; ModelRenderer pieds1; ModelRenderer pieds2; ModelRenderer tete; ModelRenderer bec; ModelRenderer queue1; ModelRenderer queue2; ModelRenderer dos0; ModelRenderer dos1; ModelRenderer dos3; ModelRenderer dos4; ModelRenderer supplementailes1; ModelRenderer supplementailes2; ModelRenderer boutailes1; ModelRenderer boutailes2; public Duck() { textureWidth = 64; textureHeight = 32; corps = new ModelRenderer(this, 38, 0); corps.addBox(0F, 17F, 0F, 5, 4, 6); corps.setRotationPoint(2F, 0F, 3F); corps.setTextureSize(64, 32); corps.mirror = true; setRotation(corps, 0F, 3.141593F, 0F); corps2 = new ModelRenderer(this, 0, 0); corps2.addBox(0F, 17F, 0F, 1, 1, 1); corps2.setRotationPoint(0F, 0F, 0F); corps2.setTextureSize(64, 32); corps2.mirror = true; setRotation(corps2, 0F, 0F, 0F); patte2 = new ModelRenderer(this, 40, 22); patte2.addBox(0F, 17F, 0F, 1, 3, 1); patte2.setRotationPoint(1F, 4F, 0F); patte2.setTextureSize(64, 32); patte2.mirror = true; setRotation(patte2, 0F, 3.141593F, 0F); patte = new ModelRenderer(this, 35, 22); patte.addBox(0F, 17F, 0F, 1, 3, 1); patte.setRotationPoint(-1F, 4F, 0F); patte.setTextureSize(64, 32); patte.mirror = true; setRotation(patte, 0F, 3.141593F, 0F); Ailes1 = new ModelRenderer(this, 0, 10); Ailes1.addBox(0F, 17F, 0F, 1, 3, 4); Ailes1.setRotationPoint(-3F, 0F, 2F); Ailes1.setTextureSize(64, 32); Ailes1.mirror = true; setRotation(Ailes1, 0F, 3.141593F, 0F); ailes2 = new ModelRenderer(this, 0, 24); ailes2.addBox(0F, 17F, 0F, 1, 1, 5); ailes2.setRotationPoint(3F, 1F, 3F); ailes2.setTextureSize(64, 32); ailes2.mirror = true; setRotation(ailes2, 0F, 3.141593F, 0F); pieds1 = new ModelRenderer(this, 35, 26); pieds1.addBox(0F, 17F, 0F, 1, 1, 1); pieds1.setRotationPoint(-1F, 6F, -1F); pieds1.setTextureSize(64, 32); pieds1.mirror = true; setRotation(pieds1, 0F, 3.141593F, 0F); pieds2 = new ModelRenderer(this, 40, 26); pieds2.addBox(0F, 17F, 0F, 1, 1, 1); pieds2.setRotationPoint(1F, 6F, -1F); pieds2.setTextureSize(64, 32); pieds2.mirror = true; setRotation(pieds2, 0F, 3.141593F, 0F); tete = new ModelRenderer(this, 22, 22); tete.addBox(-1F, 17F, 0F, 3, 5, 3); tete.setRotationPoint(0F, -2F, -3F); tete.setTextureSize(64, 32); tete.mirror = true; setRotation(tete, 0F, 3.141593F, 0F); bec = new ModelRenderer(this, 22, 0); bec.addBox(0F, 17F, 14F, 3, 1, 2); bec.setRotationPoint(1F, 1F, 8F); bec.setTextureSize(64, 32); bec.mirror = true; setRotation(bec, 0F, 3.141593F, 0F); queue1 = new ModelRenderer(this, 18, 3); queue1.addBox(0F, 17F, 0F, 5, 1, 2); queue1.setRotationPoint(2F, 1F, 5F); queue1.setTextureSize(64, 32); queue1.mirror = true; setRotation(queue1, 0F, 3.141593F, 0F); queue2 = new ModelRenderer(this, 23, 7); queue2.addBox(0F, 17F, 0F, 5, 1, 1); queue2.setRotationPoint(2F, 2F, 4F); queue2.setTextureSize(64, 32); queue2.mirror = true; setRotation(queue2, 0F, 3.141593F, 0F); dos0 = new ModelRenderer(this, 10, 10); dos0.addBox(0F, 17F, 2F, 5, 1, 1); dos0.setRotationPoint(2F, -1F, 6F); dos0.setTextureSize(64, 32); dos0.mirror = true; setRotation(dos0, 0F, 3.141593F, 0F); dos1 = new ModelRenderer(this, 10, 12); dos1.addBox(0F, 17F, 2F, 5, 1, 1); dos1.setRotationPoint(2F, -1F, 5F); dos1.setTextureSize(64, 32); dos1.mirror = true; setRotation(dos1, 0F, 3.141593F, 0F); dos1.mirror = false; dos3 = new ModelRenderer(this, 10, 14); dos3.addBox(0F, 17F, 0F, 5, 1, 1); dos3.setRotationPoint(2F, -1F, -1F); dos3.setTextureSize(64, 32); dos3.mirror = true; setRotation(dos3, 0F, 3.141593F, 0F); dos4 = new ModelRenderer(this, 22, 10); dos4.addBox(0F, 17F, 0F, 5, 1, 3); dos4.setRotationPoint(2F, -1F, 2F); dos4.setTextureSize(64, 32); dos4.mirror = true; setRotation(dos4, 0F, 3.141593F, 0F); supplementailes1 = new ModelRenderer(this, 0, 17); supplementailes1.addBox(0F, 17F, 0F, 1, 1, 6); supplementailes1.setRotationPoint(3F, 0F, 4F); supplementailes1.setTextureSize(64, 32); supplementailes1.mirror = true; setRotation(supplementailes1, 0F, 3.141593F, 0F); supplementailes2 = new ModelRenderer(this, 12, 25); supplementailes2.addBox(0F, 17F, 0F, 1, 1, 4); supplementailes2.setRotationPoint(3F, 2F, 2F); supplementailes2.setTextureSize(64, 32); supplementailes2.mirror = true; setRotation(supplementailes2, 0F, 3.141593F, 0F); boutailes1 = new ModelRenderer(this, 32, 0); boutailes1.addBox(0F, 17F, 0F, 1, 1, 2); boutailes1.setRotationPoint(-3F, 0F, 4F); boutailes1.setTextureSize(64, 32); boutailes1.mirror = true; setRotation(boutailes1, 0F, 3.141593F, 0F); boutailes2 = new ModelRenderer(this, 17, 1); boutailes2.addBox(0F, 17F, 0F, 1, 1, 1); boutailes2.setRotationPoint(-4F, 1F, 2F); boutailes2.setTextureSize(64, 32); boutailes2.mirror = true; setRotation(boutailes2, 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); corps.render(par7); corps2.render(par7); patte.render(par7); patte2.render(par7); tete.render(par7); pieds1.render(par7); pieds2.render(par7); Ailes1.render(par7); ailes2.render(par7); bec.render(par7); dos1.render(par7); queue1.render(par7); queue2.render(par7); dos0.render(par7); dos0.render(par7); dos1.render(par7); dos3.render(par7); dos4.render(par7); supplementailes1.render(par7); supplementailes2.render(par7); boutailes1.render(par7); boutailes2.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) { //Problème ICI: this.tete.rotateAngleX = par5 / (180F / (float)Math.PI); this.bec.rotateAngleX = par5 / (190F / (float)Math.PI); // this.Ailes1.rotateAngleZ = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 1.0F * par2 * 0.2F; this.boutailes1.rotateAngleZ = this.Ailes1.rotateAngleZ; this.boutailes2.rotateAngleZ = this.Ailes1.rotateAngleZ; this.ailes2.rotateAngleZ = -MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 1.0F * par2 * 0.2F; this.supplementailes1.rotateAngleZ = this.ailes2.rotateAngleZ; this.supplementailes2.rotateAngleZ = this.ailes2.rotateAngleZ; this.patte.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 0.5F * par2; this.patte2.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 0.5F * par2; this.pieds1.rotateAngleX = this.patte.rotateAngleX; this.pieds2.rotateAngleX = this.patte2.rotateAngleX; } }
-
Pas comme tu veux, ça veut dire que elle fonctionne mais toi tu veux pas comme cela ? Si tu peux nous donner le minimum d’information pour que on puisse savoir comment tu veux l’animer.
-
en gros: mon entity = un canard , je veux sa tête pivote a droite puis a gauche comme un poulet dans minecraft tout simplement
-
Modifie ton model comme ceci
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); corps.render(f5); corps2.render(f5); patte.render(f5); patte2.render(f5); tete.render(f5); pieds1.render(f5); pieds2.render(f5); Ailes1.render(f5); ailes2.render(f5); bec.render(f5); dos1.render(f5); queue1.render(f5); queue2.render(f5); dos0.render(f5); dos0.render(f5); dos1.render(f5); dos3.render(f5); dos4.render(f5); supplementailes1.render(f5); supplementailes2.render(f5); boutailes1.render(f5); boutailes2.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } { //Problème ICI: this.tete.rotateAngleX = f / (180F / (float)Math.PI); this.bec.rotateAngleX = f / (190F / (float)Math.PI); // this.Ailes1.rotateAngleZ = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.0F * f * 0.2F; this.boutailes1.rotateAngleZ = this.Ailes1.rotateAngleZ; this.boutailes2.rotateAngleZ = this.Ailes1.rotateAngleZ; this.ailes2.rotateAngleZ = -MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.0F * f * 0.2F; this.supplementailes1.rotateAngleZ = this.ailes2.rotateAngleZ; this.supplementailes2.rotateAngleZ = this.ailes2.rotateAngleZ; this.patte.rotateAngleX = MathHelper.cos(f * 0.6662F) * 0.5F * f; this.patte2.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 0.5F * f; this.pieds1.rotateAngleX = this.patte.rotateAngleX; this.pieds2.rotateAngleX = this.patte2.rotateAngleX; } }%(#666600)[ ```] f1,f5 c'est float 1 etc En gros en mettant f tu sélectionne tout , cher moi ca marche en mettant f :)
-
Chez moi c’est encore pire mdr regarde le screen.
-
Remet ton ancien code et a la place de
this.tete.rotateAngleX = par1 / (180F / (float)Math.PI); this.bec.rotateAngleX = par1 / (190F / (float)Math.PI);
Si ca ne marche toujours pas je te conseil de refaire ton code “PROPRE” grâce a ce tuto http://www.minecraftforgefrance.fr/showthread.php?tid=366
-
J’ai fais un script pour corriger tous les bugs de techne à l’exportation : exportes ton fichier depuis techne (sans rien modifier), puis va ici : http://scarex.fr/model_corrector.php , mets-y ton package, ton code et choisis Entity/Item. puis clique sur valider, çà te donnera un code propre, non-bugué et conforme à la convention java.
Ensuite tu pour les animations : regarde comment c’est géré pour les autres entités de minecraft.
-
Non toujours un problème j’ai essayé ton moyen scarex marche toujours pas la tête reste bug.
screen: http://puu.sh/jz3iy/ff6bbb634e.pngJe pense savoir d’ou vient le problème, en gros je vous explique j’ai créer l’entity avec techne mais le problème et que mon entity une fois fini elle marche a l’envers du coup j’ai tous tourné avec l’option rotation sur techne pensez-vous que le problème vient de la rotation de l’entity?.
-
@‘floriangabet’:
Non toujours un problème j’ai essayé ton moyen scarex marche toujours pas la tête reste bug.
screen: http://puu.sh/jz3iy/ff6bbb634e.pngJe pense savoir d’ou vient le problème, en gros je vous explique j’ai créer l’entity avec techne mais le problème et que mon entity une fois fini elle marche a l’envers du coup j’ai tous tourné avec l’option rotation sur techne pensez-vous que le problème vient de la rotation de l’entity?.
Surement Techne est l’un des plus connus mais il es très buggé , d’ou le fait que Scarex a l’ancé le projet pour créer un nouveau programme , tu devrais refaire ton model à Zéro sans les Rotations et aussi n’oublie pas de regarder en bas a droite le cube il t’indique les positions FRONT etc
-
D’acc je refais … merci de l’info
-
Mon script ne fais que corriger la plupart des bugs ainsi que rendre le code plus propre, ensuite le rendu se fait comme avec n’importe quelle entité, donc tu auras surement besoin de modifier quelques rotations au niveau du rendu de l’entité mais pas au niveau du model. Sinon renvoi le code de ton model, je te dirais s’il a été correctement corrigé
-
code:
// Date: 12/08/2015 23:04:29 // Template version 1.1 // Java generated by Techne // Keep in mind that you still need to fill in some blanks // - ZeuX package com.AltisMine.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 Duck extends ModelBase { public ModelRenderer shape1; public ModelRenderer shape2; public ModelRenderer shape3; public ModelRenderer shape4; public ModelRenderer shape5; public ModelRenderer shape6; public ModelRenderer shape7; public ModelRenderer shape8; public ModelRenderer shape9; public ModelRenderer shape10; public ModelRenderer shape12; public ModelRenderer shape11; public ModelRenderer shape13; public ModelRenderer shape15; public ModelRenderer shape16; public ModelRenderer shape17; public ModelRenderer shape14; public Duck() { this.textureWidth = 64; this.textureHeight = 32; this.shape1 = new ModelRenderer(this, 0, 26); this.shape1.mirror = true; this.shape1.addBox(0F, 0F, 0F, 1, 1, 1); this.shape1.setRotationPoint(-1F, 23F, -2F); this.shape1.setTextureSize(64, 32); setRotation(this.shape1, 0F, 0F, 0F); this.shape2 = new ModelRenderer(this, 4, 26); this.shape2.mirror = true; this.shape2.addBox(0F, 0F, 0F, 1, 1, 1); this.shape2.setRotationPoint(1F, 23F, -2F); this.shape2.setTextureSize(64, 32); setRotation(this.shape2, 0F, 0F, 0F); this.shape3 = new ModelRenderer(this, 4, 28); this.shape3.mirror = true; this.shape3.addBox(0F, 0F, 0F, 1, 3, 1); this.shape3.setRotationPoint(1F, 21F, -1F); this.shape3.setTextureSize(64, 32); setRotation(this.shape3, 0F, 0F, 0F); this.shape4 = new ModelRenderer(this, 0, 28); this.shape4.mirror = true; this.shape4.addBox(0F, 0F, 0F, 1, 3, 1); this.shape4.setRotationPoint(-1F, 21F, -1F); this.shape4.setTextureSize(64, 32); setRotation(this.shape4, 0F, 0F, 0F); this.shape5 = new ModelRenderer(this, 40, 0); this.shape5.mirror = true; this.shape5.addBox(0F, 0F, 0F, 5, 4, 7); this.shape5.setRotationPoint(-2F, 17F, -3F); this.shape5.setTextureSize(64, 32); setRotation(this.shape5, 0F, 0F, 0F); this.shape6 = new ModelRenderer(this, 0, 0); this.shape6.mirror = true; this.shape6.addBox(0F, 0F, 0F, 3, 4, 2); this.shape6.setRotationPoint(-1F, 15.53333F, -5F); this.shape6.setTextureSize(64, 32); setRotation(this.shape6, 0F, 0F, 0F); this.shape7 = new ModelRenderer(this, 28, 0); this.shape7.mirror = true; this.shape7.addBox(0F, 0F, 0F, 1, 3, 5); this.shape7.setRotationPoint(3F, 17F, -2F); this.shape7.setTextureSize(64, 32); setRotation(this.shape7, 0F, 0F, 0F); this.shape8 = new ModelRenderer(this, 27, 17); this.shape8.mirror = true; this.shape8.addBox(0F, 0F, 0F, 1, 3, 5); this.shape8.setRotationPoint(-3F, 17F, -2F); this.shape8.setTextureSize(64, 32); setRotation(this.shape8, 0F, 0F, 0F); this.shape9 = new ModelRenderer(this, 23, 8); this.shape9.mirror = true; this.shape9.addBox(0F, 0F, 0F, 5, 1, 3); this.shape9.setRotationPoint(-2F, 17F, 4F); this.shape9.setTextureSize(64, 32); setRotation(this.shape9, 0F, 0F, 0F); this.shape10 = new ModelRenderer(this, 25, 12); this.shape10.mirror = true; this.shape10.addBox(0F, 0F, 0F, 5, 1, 2); this.shape10.setRotationPoint(-2F, 18F, 4F); this.shape10.setTextureSize(64, 32); setRotation(this.shape10, 0F, 0F, 0F); this.shape12 = new ModelRenderer(this, 27, 15); this.shape12.mirror = true; this.shape12.addBox(0F, 0F, 0F, 5, 1, 1); this.shape12.setRotationPoint(-2F, 19F, 4F); this.shape12.setTextureSize(64, 32); setRotation(this.shape12, 0F, 0F, 0F); this.shape11 = new ModelRenderer(this, 39, 11); this.shape11.mirror = true; this.shape11.addBox(0F, 0F, 0F, 5, 1, 8); this.shape11.setRotationPoint(-2F, 16F, -2F); this.shape11.setTextureSize(64, 32); setRotation(this.shape11, 0F, 0F, 0F); this.shape13 = new ModelRenderer(this, 0, 6); this.shape13.mirror = true; this.shape13.addBox(0F, 0F, 0F, 3, 1, 1); this.shape13.setRotationPoint(-1F, 18F, -6F); this.shape13.setTextureSize(64, 32); setRotation(this.shape13, 0F, 0F, 0F); this.shape15 = new ModelRenderer(this, 16, 0); this.shape15.mirror = true; this.shape15.addBox(0F, 0F, 0F, 1, 1, 2); this.shape15.setRotationPoint(-3F, 17F, 3F); this.shape15.setTextureSize(64, 32); setRotation(this.shape15, 0F, 0F, 0F); this.shape16 = new ModelRenderer(this, 12, 0); this.shape16.mirror = true; this.shape16.addBox(0F, 0F, 0F, 1, 1, 1); this.shape16.setRotationPoint(-3F, 18F, 3F); this.shape16.setTextureSize(64, 32); setRotation(this.shape16, 0F, 0F, 0F); this.shape17 = new ModelRenderer(this, 24, 0); this.shape17.mirror = true; this.shape17.addBox(0F, 0F, 0F, 1, 1, 1); this.shape17.setRotationPoint(3F, 18F, 3F); this.shape17.setTextureSize(64, 32); setRotation(this.shape17, 0F, 0F, 0F); this.shape14 = new ModelRenderer(this, 22, 2); this.shape14.mirror = true; this.shape14.addBox(0F, 0F, 0F, 1, 1, 2); this.shape14.setRotationPoint(3F, 17F, 3F); this.shape14.setTextureSize(64, 32); setRotation(this.shape14, 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); this.shape1.render(f5); this.shape2.render(f5); this.shape3.render(f5); this.shape4.render(f5); this.shape5.render(f5); this.shape6.render(f5); this.shape7.render(f5); this.shape8.render(f5); this.shape9.render(f5); this.shape10.render(f5); this.shape12.render(f5); this.shape11.render(f5); this.shape13.render(f5); this.shape15.render(f5); this.shape16.render(f5); this.shape17.render(f5); this.shape14.render(f5); } public static void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { //Problème ICI: this.shape6.rotateAngleX = f4 / (180F / (float)Math.PI); this.shape6.rotateAngleY = f3 / (190F / (float)Math.PI); this.shape13.rotateAngleX = this.shape6.rotateAngleX; this.shape13.rotateAngleX = this.shape6.rotateAngleY; this.shape7.rotateAngleZ = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.7F * f1 * 0.5F; this.shape17.rotateAngleZ = this.shape7.rotateAngleZ; this.shape14.rotateAngleZ = this.shape7.rotateAngleZ; this.shape8.rotateAngleZ = -MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.7F * f1 * 0.5F; this.shape15.rotateAngleZ = this.shape8.rotateAngleZ; this.shape16.rotateAngleZ = this.shape8.rotateAngleZ; this.shape3.rotateAngleZ = 0.0F; this.shape3.rotateAngleX = MathHelper.cos(f * 0.6662F) * 0.5F * f; this.shape4.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 0.5F * f; this.shape4.rotateAngleZ = 0.0F; this.shape2.rotateAngleX = this.shape3.rotateAngleX; this.shape1.rotateAngleX = this.shape4.rotateAngleX; } }
J’ai refais mon entity c’est beaucoup mieux mais il reste quelque bug au niveau de la tete elle se décolle du corps quand mon entity tourne la tête et un problème aussi au patte elle bouge super vite quand il marche.
Aussi mon entity a une énorme hombre fin je sais pas si c’est l’hombre de mon entity ou un bug …
screen: http://puu.sh/jznnr/bf62871098.png -
Dans l’entity de ton canard tu dois avoir ceci
getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D);
Ta juste a modifier la valeur
Pour l’ombre c’est dans l’enregistrement dans le client proxy
RenderingRegistry.registerEntityRenderingHandler(EntityFrog.class, new RenderFrog(new ModelFrog(), 0.5F));
Modifie le 0.5F pour l’ombre pour ton mob envoie de profil car la on voie pas ^^
-
Pour la tête qui se détache du corps, il faut changer le centre de rotation.
-
@‘robin4002’:
Pour la tête qui se détache du corps, il faut changer le centre de rotation.
Si tu sais pas ou c’est , dans techne Offset la boule bleu va se déplacer , met la au centre de ta tête
-
Wuut expliquez moi pour le Offset avec techne plz je comprend pas je vois ou c’est Offset mais je comprend pas se qu’il faut faire car quand je touche le Offset ma tête se déplace …
Merci -
Regarde les autres models inclus dans Techne tu verras que pour chaque jonction de 2 parties du model une boule bleue est placée entre. C’est ce qu’on appelle le point de rotation. Regarde le model biped ou même celui de l’araignée, tu comprendras mieux.
-
c’est ici qu’il faut touché ? ```java
this.shape6.setRotationPoint(-1F, 15.53333F, -5F); -
C’est bon j’ai compris merci ^^
-
@‘floriangabet’:
C’est bon j’ai compris merci ^^
Pour expliquer l’offset c’est comme un articulations dans ton doigts ces les phalanges stu veut