-
Notifications
You must be signed in to change notification settings - Fork 9
Comment animer une entité
Nous allons voir comment animer une entité avec les animations de CraftStudio
Vous allez avoir simplement besoin de la classe d'une entité prête à être animée, vous trouverez un tutoriel simple pour créer une entité sur MinecraftForgeFrance car nous n'expliqueront pas la démarche complète ici.
public class EntityTest extends EntityAnimal implements IAnimated
{
protected AnimationHandler animHandler = CraftStudioApi.getNewAnimationHandler(this);
public EntityTest2(World par1World) {
super(par1World);
this.animHandler.addAnim(Mod_Test.MODID, "votre_animation", "votre_modele", false);
this.setSize(1.0F, 1.5F);
}
@Override
protected void applyEntityAttributes() {
super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(4.0D);
}
@Override
public AnimationHandler getAnimationHandler() {
return this.animHandler;
}
@Override
public EntityAgeable createChild(EntityAgeable ageable) {
return null;
}
@Override
public UUID getUUID() {
return this.getPersistentID();
}
}Vous allez devoir implémenter la classe IAnimated à la classe de votre entité
Et ainsi implémenter en même temps les fonctions getAnimationHandler() et getUUID()
Ensuite créez une variable du type AnimationHandler, appelez là animHandler par exemple pour pouvoir appeler,
getNewAnimationHandler() de la classe CraftStudioAPI, pour ensuite définir la classe à animer en temps que paramètre this
Vous devriez avoir ceci:
protected AnimationHandler animHandler = CraftStudioApi.getNewAnimationHandler(this);N'oubliez pas d'appeler la variable que nous avons créer précédemment dans la fonction getAnimationHandler()
@Override
public AnimationHandler getAnimationHandler() {
return this.animHandler;
}Nous allons par la suite définir l'UUID de l'animation en récupérant celui de notre entité:
@Override
public UUID getUUID() {
return this.getPersistentID();
}Nous avons maintenant créer ce qu'il nous fallait pour pouvoir correctement enregistrer et lancer les animations à notre entité
L'ajout des animations dans l'entité ce passe dans le constucteur de cette dernière:
Il vous suffira d'appeler l'AnimationHandler via son getter getAnimationHandler() pour utiliser la méthode addAnim
Cette méthode est utilisable de différente manière, la JavDoc pourra vous aider !
Les méthodes addAnim() commencent toute par la déclaration de l'ID de votre mod (modid)
this.getAnimationHandler().addAnim(Mod_Test.MODID, "votre_animation", "le_modele_a_animer", false);Vous l'aurez compris:
"votre_modid" correspond à l'ID de votre mod
"votre_animation" correspond au nom de l'animation que vous voulez ajouter à l'entité
"le_modele_a_animer" correspond au nom du modèle sur lequel vous avez exporté l'animation
false est le booléen pour savoir si votre animation ce joue en boucle ou non, ici elle ne se jouera pas en boucle (false)
Vous avez aussi la possibilité d'ajouter une animation inversé à votre entité
this.getAnimationHandler().addAnim(Mod_Test.MODID, "nouvelle_animation_inversée", "animation_qui_doit_etre_inversée");Encore une fois un exemple parlant, le deuxième paramètre doit être le nom de la nouvelle animation, celle qui sera inversée
this.getAnimationHandler().addAnim(Mod_Test.MODID, "close_door", "open_door");Pour cet exemple j'ai créé l'animation du nom de "close_door" qui est l'animation inversée de "open_door"
Vous avez aussi la possibilité d'ajouter une animation qui sera hard-codée c'est avec des lignes de code que vous créerez l'animation !
Par exemple si vous devez ajouter une animation où l'entité regarde autour d'elle.
Vous avez de la chance car cette animation custom est intégré à l'API !
this.animHandler.addAnim(Mod_Test.MODID, "lootAt", "le_modele_a_animer", new AnimationLootAt(this, "Head"));Nous suivons la même démarche que la première fois, nous déclaront le modid puis le nom de l'animation ici lookAt on défini le modèle qui doit être animé (le_modele_a_animer), puis nous créons une nouvelle instance de notre animation codée à la main: new AnimationLootAt(this, "Head")
this correspond à l'entité qui doit être animée
"Head" est la partie du modèle 3D qui sera animée, ici la tête donc
Nous avons maintenant vu les différentes façon d'ajouter une animation à notre entité, si cela ne vous parait pas trop clair, aidez-vous de la JavaDoc
Dernière partie de ce tutoriel, lancer l'animation sur notre entité !
Vous n'avez alors qu'a simplement appeler la fonction startAnimation() venant de l'AnimationHandler, petit exemple:
this.getAnimationHandler().startAnimation(Mod_Test.MODID, "mon_animation_enregistrée");L'appel de cette méthode se fait dans n'importe quelle fonction que votre entité peut avoir:
Pourquoi pas dans la fonction onUpdate() si vous avez une animation qui doit ce jouer en boucle, ou bien dans processInteract(EntityPlayer player, EnumHand hand) lors de l'interraction avec votre entité ?
Libre à vous et votre imagination pour faire le reste !
Vous pourriez aussi avoir besoin de la méthode:
if(this.getAnimationHandler().isAnimationActive(Mod_Test.MODID, "mon_animation_enregistrée")) {}Pour savoir si une animation est active ou non
Ou alors:
this.getAnimationHandler().stopAnimation(Mod_Test.MODID, "mon_animation_enregistrée");Pour simplement stopper l'animation qui est lancée
Voilà qui conclu cette série de tutoriel pour savoir comment animer une entité ! Enjoy !
○ CraftStudio
-
[EN] Export CraftStudio's Model(s), Animation(s) and Texture
-
[FR] Exporter les Modèles, Animations et Texture de CraftStudio
○ Minecraft Forge
-
JavaDoc(0.1)
-
[FR/EN] Example Mod
-
[EN] Tutorials
- Entities
- Blocks
- Add a render to a block (W.I.P)
- How to animate a block (W.I.P)
-
[FR] Tutoriels
- Entités
- Blocs
- Ajouter un rendu à un bloc (W.I.P)
- Comment animer un bloc (W.I.P)
○ [EN/FR] Version of the Api
