- Home /
Link animations and movement for CharacterController
I have a basic script for moving my character around and have setup my blend trees with animations.
Problem is that the movement and animations are not linked.
If I push play, the Idle state starts, and when it ends, blends into the walk animation automatically. Without any input from the controls.
Controls work fine by them selves as I can move around as I wish. But the animations pay no attention to the controls and go on regardless. Is this an issue in the CharacterController?
I am new to Unity and am running version 5.0.1 personal
 using UnityEngine;
 using System.Collections;
 
 [RequireComponent(typeof (Animator))]
 [RequireComponent(typeof(CharacterController))]
 public class Motion : MonoBehaviour {
     
     public float MoveSpeed;
     public float RotationSpeed;
     CharacterController cc;
     
     public float animSpeed = 1.5f;
     private Animator anim;
     private AnimatorStateInfo currentBaseState;
     static int idleState = Animator.StringToHash("Base Layer.Idle");    
     static int forwardState = Animator.StringToHash("Base Layer.Forwards");
     static int backwardState = Animator.StringToHash("Base Layer.Backwards");
 
     // Use this for initialization
     void Start () {
         anim = GetComponent<Animator>();
         cc = GetComponent <CharacterController>();
     }
     
     // Update is called once per frame
     void Update () {
         Vector3 forward = Input.GetAxis ("Vertical") * transform.TransformDirection (Vector3.forward) * MoveSpeed;
         transform.Rotate (new Vector3 (0, Input.GetAxis ("Horizontal") * RotationSpeed * Time.deltaTime, 0));
         cc.Move (forward * Time.deltaTime);
         cc.SimpleMove (Physics.gravity);
         Debug.Log (anim);
     }
 
 }
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by Tempus_G · May 23, 2015 at 07:52 AM
Ok. I think I sorted it out. Was missing A few lines......
Updated script:
 using UnityEngine;
 using System.Collections;
 
 [RequireComponent(typeof(Animator))]
 [RequireComponent(typeof(CharacterController))]
 public class Motion : MonoBehaviour {
 
     Animator anim;
     public float MoveSpeed;
     public float RotationSpeed;
     CharacterController cc;
 
     // Use this for initialization
     void Start () {
         cc = GetComponent <CharacterController>();
         anim = GetComponent<Animator>();
     }
     
     // Update is called once per frame
     void Update () {
         Vector3 forward = Input.GetAxis("Vertical") * transform.TransformDirection(Vector3.forward) * MoveSpeed;
         transform.Rotate (new Vector3(0,Input.GetAxis("Horizontal") * RotationSpeed * Time.deltaTime,0));
         cc.Move(forward * Time.deltaTime);
         cc.SimpleMove(Physics.gravity);
         float move = Input.GetAxis ("Vertical");
         float turn = Input.GetAxis ("Horizontal");
         anim.SetFloat("Speed", move);
         anim.SetFloat("Direction", turn);
             
     }
 }
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                