Je travaille avec des animations dans Unity et jusqu'à présent, je n'en ai créé que quatre (haut bas gauche et droite) et ma fenêtre d'animation semble suivre ...
Le problème est que si je bougeais vers le haut, je veux que le héros continue de regarder vers le haut et non vers le `` ralenti neutre '' (ou comme il a commencé), mais cela signifie que j'ai 4 positions de ralenti ... et chacun d'eux peut passer en haut, en bas , Gauche ou Droite et ils vont exponentiellement à chaque action supplémentaire ...
Ce qui me donne l'impression de faire quelque chose de mal ...
Existe-t-il un meilleur moyen de faire des transitions entre différentes actions?
Réponses:
Vous pouvez résoudre ce type de problème avec BlendTrees (en général, son idée judicieuse de s'appuyer souvent sur des arbres de mélange). L'arbre de fusion est une sorte d'état multi-animation qui, sur la base d'un ou de plusieurs paramètres (flottants), décide laquelle des animations qu'il contient être actuellement active (ou bien l'animation résultante peut être un mélange de plusieurs animations). Même lorsque les animations ne sont pas mélangées, mais échangées, l'échange se produit au milieu de l'animation (c'est-à-dire que si l'animation "sortant" est à 35%, la nouvelle est jouée à partir de 35%). De "l'extérieur", tout cela est caché comme s'il s'agissait d'un état simple / unique.
Par exemple, vous avez un arbre de mélange avec 8 animations de sprites (inactif avec 4 directions principales et 4 diagonales). Il y a 2 paramètres dans cet arbre de mélange - "horizontal" et "vertical". Et sur la base de ces 2 paramètres, l'arbre de fusion décidera de l'animation à jouer. En fonction du paramètre "horizontal", l'arbre de fusion choisira entre l'animation gauche / droite et le paramètre "vertical" décidera de l'animation haut / bas. Ensuite, une fois combinés, vous aurez les 8 animations avec des diagonales (c'est la même idée que derrière les joypads / joysticks).
C'est un peu déroutant donc, même si StackExchange n'aime pas les liens, je vais lier un court exemple de vidéo que j'ai fait. Remarquez la partie supérieure droite de l'écran. Les points gris sont les "états" / animations et l'actif est celui qui se ferme au point rouge. Comme dit au début, il peut être encore plus complexe et chaque animation d'avoir une influence / force basée sur sa distance au point rouge, résultant en un mélange entre plusieurs animations.
De l'extérieur, son seul état (arbre de mélange) et lorsque vous appliquez le même concept pour marcher et attaquer, vous n'aurez que 3 états liés.
Les arbres de mélange sont créés avec un clic droit sur une zone d'animateur vide Créer un état -> À partir d'un nouvel arbre de mélange. De là, tout est dans l'inspecteur. L'arbre de mélange étant sélectionné, vous pouvez choisir le type d'arbre de mélange (1D, 2D, etc.), ajouter des animations, les positionner (par rapport aux valeurs des paramètres) et sélectionner les paramètres de contrôle.
Si vous souhaitez plus d'informations sur Blend Trees, voici les vidéos d'Unity - Unite 2016 et des didacticiels Unity .
la source
Le problème ici est que vous essayez de tout lier ensemble au lieu d'utiliser un déclencheur pour basculer entre les inactifs. Vous devez sélectionner l'animation inactive à l'aide d'un type conditionnel if-else ou switch-case. J'ai fait un diagramme qui semble beaucoup plus net (supposons que l'un d'eux soit le cas par défaut):
Information additionnelle:
Jetez un coup d'œil aux paramètres d'animation sur la façon de définir les paramètres que l'animateur doit reconnaître, les machines d'état pour combiner les animations, les comportements de la machine d'état pour vérifier les variables que vous avez définies.
la source