Animer un block Techne



  • Bonjour,
    je cherche désespérément un tutoriel expliquant la démarche à suivre pour animer un block Techne, quelqu'un saurai comment procéder ou aurai le lien d'un tutoriel ?

    Merci.

    Ps: j'ai essayé en faisant la même démarche que pour animer un mob, mais sa ne marche pas.


  • Administrateurs

    Mh… envoies-moi ton code pour voir. (Via http://pastebin.com)



  • Blocktest: http://pastebin.com/nG8D8xK8
    Je me sers de se bloc pour mes tests.
    Se que j'aimerai faire se serai le faire tourner sur lui même.
    TileEntity: http://pastebin.com/FiZ6CfW6
    TileEntityBlockTestRender: http://pastebin.com/ewg4MwEZ


  • Administrateurs

    Il n'y a pas de model ?





  • this.Membre.rotateAngleX = MathHelper.cos((180F / (float)y)) * -xF * f1;
    

    dans le code de ton model , après

    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    

    T'as plus qu'a remplacer X par une valeur ( 360 je dirai ) et Membre par le nom du morceau qui tourne



  • @'Nolan-XX':

    this.Membre.rotateAngleX = MathHelper.cos((180F / (float)y)) * -xF * f1;
    

    dans le code de ton model , après

    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    

    T'as plus qu'a remplacer X par une valeur ( 360 je dirai ) et Membre par le nom du morceau qui tourne

    C'est un bloc et non pas un mob, donc sa ne marche pas…


  • Administrateurs

    @'Sugarshy':

    C'est un bloc et non pas un mob, donc sa ne marche pas…

    Il est possible d'animer un block modélisé via Techne. (cc RedPower II)

    Donc logiquement, si.


  • Administrateurs

    Depuis un modèle techne et le TileEntitySpecialRender je crois pas, il faudrait sûrement passer par un ISimpleBlockRender.



  • Donc, personne n'aurai de lien vers un tutoriel ou un conseil ? 😕


  • Administrateurs

    Tu peux toujours essayer de faire le rendu par rapport à une variable que tu change dans la fonction onUpdate du tileEntity.
    Et sinon, non je n'ai pas de tutoriel.



  • Va demander à azanor 🙂 http://www.youtube.com/watch?v=A4ycaVzypwk
    (en fait non n'y va pas il ne faut pas le déranger)

    Sinon je ne pense pas que se soit possible avec un tileentity.



  • Effectivement, il est entrain de travailler a plein temps sur thaumcraft, et avec les merveilles qu'il fait mieux vaut le laisser travailler 😉
    Je vais essayer de voir avec dokMixer, et je mettrai mon avancement en commentaire, et en ferai un petit tuto une fois que j'aurai trouvé ;)___Bon, et bien, j'ai tout essayé, et rien ne marche !
    Dernier recours, j'ai envoyé un message à dokMixer, en espérant une aide de sa part !
    Je vous tiens au courant ;)___Sa réponse: et concernant les entités et leur rotation
    en fait, avec atebits les lazers et hologrammes ne fonctionnent pas sur le modèle des entités
    pour le cas des lasers, il s'agit de modèles 3D dont les vecteurs sont tracés, et tout l'objet effectue une rotation par rapport à un axe, et en se basant sur le point d'origine 0,0,0
    l'autre solution, c'est d'utiliser des vrais modèles 3D, texturés, qui sont animés. Et dans leur animation, nous les faisons tourner.
    Ce qui t'intéresse, c'est de pouvoir effectuer une rotation a intervalles réguliers
    Et … ce n'est pas chose aisée. Minecraft aime pas trop trop ça. Pour les blocs c'est chaud (neymir travaille sur ce genre de trucs pour le fun), pour les entités… en toute honnéteté je ne sais pas. Il faudrait que tu réussisses à insérer un hook dans le rendu des entités peut-être, afin de lui imprimer rotation rapport à une variable temps…
    je n'ai vraiment pas assez de connaissances en code "minecraft" pur pour t'aider sur ce point. Je me limite à savoir faire du python, java… mais je n'ai jamais regardé de quelle manière tournait Minecraft 🙂

    Donc, l'idée serai d'afficher dans minecraft un .obj, et ensuite lui faire effectuer la rotation, je vais essayer tout sa !___Je n'arrive pas à trouver de tutoriel en 1.6.2 pour importer un .obj sur minecraft, me permettant ensuite d'essayer de l'animer.
    Quelqu'un aurai un lien ?



  • Messages fusionnés
    Et j'ai déjà essayé de mettre un .obj mais je n'ai pas réussi.



  • Bon, et bien, je crois que c'est foutu…
    Merci en tout cas pour votre aide ^^'


  • Administrateurs

    Sinon tu peux toujours regarder le coffre, il y a une animation quand il s'ouvre.



  • Bon, et bien j'ai presque fini !
    Pour cela, j'ai pris un model techne masique, comme si on le voulais static, puis j'ai modifié dans mon model les ModelRenderer Shape1; en public static ModelRenderer Shape1; et ai ajouté les ```
    public void RenderModel (float f1) {
    Shape1.render(f1);

    Pour la rotation, j'utilise ceci dans la classe de mon bloc:
    ```java
    public void onEntityWalking(World par1World, int par2, int par3, int par4, Entity par5Entity) {
    angle = angle + 0.1;
    Ba.Shape1.rotateAngleY = (float)angle;
    ModLoader.getMinecraftInstance().thePlayer.addChatMessage("rotation");
    }
    

    J'ai mis EntityWalking pour les tests,et sa marche. Se qui m’amène à ma dernière question:
    Que mettre à la place de EntityWWalking pour répéter continuellement le RotateAngle ? Comme par exemple effectuer le rotate angle à chaque tick ?



  • Personne n'aurai d'idée sur comment faire répéter constamment la fonction ?
    J'ai essayé avec un loop, mais sa fais planter le jeu…


  • Administrateurs

    public void updateTick(World world, int x, int y, int z, Random rand)
    {
    }
    

    Après tu peux changer la vitesse avec la fonction

    public int tickRate(World world)
    {
    return 10;
    }
    


  • Comme sa ?

    public void updateTick(World world, int x, int y, int z, Random rand)
    {
    angle = angle + 0.1;
    Ba.Shape1.rotateAngleY = (float)angle;
    ModLoader.getMinecraftInstance().thePlayer.addChatMessage("rotation");
    }
    

    Par ce que sa sa marche pas (mis à la place de l'entityWalking)

    Bon, j'ai trouvé !
    Dans mon ```java
    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)

    j'ai ajouté
    ```java
    Shape1.rotateAngleY += 0.001F;
    

    0.001 définissant la vitesse !

    Merci à vous tous pour votre aide !


Log in to reply