Unity's Animator Controller has a reputation of quickly becoming a spaghetti mess of transitions. With normal Animator Controller designs, you have a transition from one state to every other possible state that the Animator can play next. In addition, the number of necessary parameters grows in order to be able to trigger the transitions. The Third Person Controller takes a different approach to this controller and transitions only need to be specified when they are absolutely necessary.
The AnimatorMonitor component manages these transitions and will manually transition to new states when requested. This transition occurs using Animator.Crossfade so no explicit transitions are needed within the Animator Controller. This crossfade transition is generally used when transitioning between groups of animations. For example, the crossfade transition is used when transitioning from an ability back to the normal idle animation. The crossfade transition is not used when transition within a group of animations. For example, explicit transitions are used while within the Cover ability's substate. Explicit transitions are used in this case because not many transitions are needed and it allows for a more familiar design process.
When using the crossfade transitions, there are three different locations in which the destination state and transition duration are specified. If transitioning to an animation specific to an item, the item animation state is used. If transitioning to an Ability, the destination state and transition duration is specified within the ability. If no item or ability animation needs to play then the AnimatorMonitor will play the default animation as specified in the parameters below.
With most Animator Controller designs the transition takes place because a parameter with a specific name is triggered. For example, the character may jump when the Jump bool parameter is true. This results in many, many different parameters if your character can perform many different types of animations. The Third Person Controller framework uses a generic set of parameters that can handle an infinite amount of animations.
In addition to managing the transitions, the AnimatorMonitor component is the central point for animation event callbacks. The AnimatorMonitor will be called when an animation event occurs and the AnimatorMonitor will convert the animation event into an event understood by the rest of the framework using and EventHandler.
Debug State Changes
Should state changes be sent to the debug console?
Horizontal Input Damp Time
The horizontal input dampening time
Vertical Input Damp Time
The vertical input dampening time
The default base state
Upper Body State
The default upper body state
Left Arm State
The default left arm state
Right Arm State
The default right arm state
Left Hand State
The default left hand state
Right Hand State
The default right hand state
The default additive state