I want to ask for advice regarding best practices with animations.
First, some info: I am developing an action-RPG game (Diablo style); very small indie team, nobody has any experience with animations. Our hope is to be able to work with paid contractors for the animations, and because of this, before spending money left and right, I want to understand good principles and have a solid plan.
What we want: animations to cover combat scenarios (idle, run, various attacks, various casts) and slightly different visuals for different groups of weapons (think 2x 1-handers vs 2-hander) for each of these scenarios.
So far we use an animator controller with substates for each of the weapon groups. Inside each weapon-group substate are all the animations for that given weapon group: Idle, Run, Attack1, Attack2, Attack3 and so on. Furthermore, each of these animations has a transition from AnyState (each with their own trigger).
My questions:
-
Is this a good setup? I remember reading that having a lot of AnyState transitions is not good practice.
-
Looking at same scenario for different weapon groups - let’s take for example Run. I want this to look similar between 2-hander and 2x 1-handers: only the upper body (hands) are changing slightly. I understand that this can also be done from Layers, AvatarMasks and IK but I don’t understand how it’s meant to work.
Right now we have different placeholder animations for each, so our options are (let’s assume 6 weapon groups):
- Commission 6 completely different animations for each scenario; but this is overspending the budget.
- Commission 1 animation for each scenario then attempt to tweak it outside Unity in order to produce 6 slightly different ones; I am hoping that this will result in less cost, but the result in Unity is the same.
- Commission 1 animation for each scenario, then use Mecanim magic inside Unity to adjust it for each weapon group. This part I have no idea how to approach, and is one of the main things I am asking advice on.
- Animation events and combat: I want to line up the moment when the damage occurs with a specific fixed time in the animation. I can calculate this in the combat action’s script using the fixed time threshold, the animation base duration and the animator speed OR I can put an event in the animation. What is the preferred approach here?