What is the difference between playing states and animation clips and why i can't play clips ?

The states and animations not my own.

I have a prefab of a character that have Animator component attached to it. The character in the Hierarchy have Animator with some states and blends and also have some animation clips.

Now when i play/run a State of the Animator is that meaning i’m playing animation? Or the animation clips is something else ?

And why i can’t playing the animation clips ? I’m not getting errors or exceptions it’s just not playing it.

Here is a script that attached to this character and i also added to this character a Animation component. So now the character object have both Animator and Animation components.

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class SwitchAnimations : MonoBehaviour
{
   private Animator animator;
   private int index = 0;
   private static UnityEditor.Animations.AnimatorController controller;
   private UnityEditor.Animations.AnimatorState[] an;

   // Use this for initialization
   void Start()
   {
       animator = GetComponent<Animator>();
       an = GetStateNames(animator);
   }

   // Update is called once per frame
   void Update()
   {
       if (Input.GetKeyDown(KeyCode.A))
       {
           animator.Play(an[index].name);
           if (++index == an.Length)
               index = 0;
       }
   }

   private static UnityEditor.Animations.AnimatorState[] GetStateNames(Animator animator)
   {
       controller = animator ? animator.runtimeAnimatorController as UnityEditor.Animations.AnimatorController : null;
       return controller == null ? null : controller.layers.SelectMany(l => l.stateMachine.states).Select(s => s.state).ToArray();
   }

   private void RollSound()
   {

   }

   private void CantRotate()
   {

   }

   private void EndRoll()
   {

   }

   private void EndPickup()
   {

   }
}

Inside the variable an there are 9 states:

Aiming
Death_A
Use
Grounded
Roll
PickupObject
Reload_Rifle
Shoot_Rifle
Empty

When i click on A key it’s playing the states one by one each time i click on A Everything is working fine i can play the 9 states by clicking on A.

what i don’t understand with the States is inside the editor when i’m in the hierarchy selecting the character and in the menu make: Window > Animator i see the 9 states on the LegsLayer:

But then if i click on state Grounded double click i see a blend tree and i’m not sure if this is also states or maybe this is animation clips ? Then how can i get access to them ?

Ok this is one part i don’t understand yet about the Animator and what and how i can play with it.

The second part is related to AnimationClip/s and why i can’t play them ?

The script for animations clips:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;

public class SwitchAnimations : MonoBehaviour
{
   private Animation animation;
   private AnimationClip[] animationClips;

   // Use this for initialization
   void Start()
   {
       animation = GetComponent<Animation>();
       animationClips = AnimationUtility.GetAnimationClips(gameObject);

       foreach (AnimationClip clip in animationClips)
       {
           animation.AddClip(clip, clip.name);
       }
   }
   // Update is called once per frame
   void Update()
   {
       if (Input.GetKeyDown(KeyCode.A))
       {
           animation.clip = animationClips[6];
           animation.Play(animationClips[6].name);
       }
   }

   private void RollSound()
   {

   }

   private void CantRotate()
   {

   }

   private void EndRoll()
   {

   }

   private void EndPickup()
   {

   }

   private void FootStep()
   {

   }
}

And in the variable animationClips i have 9 animations:

Rifle_Aiming_Idle
Rifle_Aiming_Walk_F_RM
Rifle_Aiming_Walk_B_RM
Rifle_Aiming_Walk_L_RM
Rifle_Aiming_Walk_R_RM
Rifle_Idle
Rifle_Walk_F_RM
Rifle_Run_F_RM
Rifle_Sprint_F_RM

When i’m running the game and clicking on A this time i see in the Inspector inside the Animation component all the animation clips and in Animation i see the animation clip to play.

I’m not getting any errors or exceptions but it’s just not playing it. The character stay still idle. Even if i choose another animation clip index to play 5 or 3 or 1 nothing is playing.

I wonder why it’s not playing the animations when i click A. In this case animation number 6 from the List but still not playing.

The reason why you play a state in the animator is because you can have state that are blend tree which contain multiple animation clip. The blend tree take care to schedule the right animation clips based on the blend tree parameter

You can’t mix an animator and animation component on the same object, the animator component will always override the result of the animation component as it write the animated properties after the animation component