Character Animator controller/movement
I have a character that i want to move with animation in the animator control but it seems the character not moving and also the idle seems to freeze after it play. and i am getting this error.
UnityEngine.Animator' does not contain a definition for GetCurrentAnimatorStateInfonimatorStateInfo' and no extension method
GetCurrentAnimatorStateInfonimatorStateInfo' of type `UnityEngine.Animator' could be found (are you missing a using directive or an assembly reference?)
and also this UnityException: Tag: gameController is not defined. PlayerMovement.Awake () (at Assets/Scripts/PlayerMovement.cs:16)
this is the scripts. HashsIDs
using UnityEngine; using System.Collections;
public class HashIDs : MonoBehaviour { public int dyingState; public int deadBool; public int locomotionState; public int speedFloat; public int ReloadingBool; public int FiringBool; public int playerInsigthBool; public int shotfloat; public int aimWeightfloat; public int angularSpeedFloat; public int openBool; public int ReloadState;
void Awake()
{
dyingState = Animator.StringToHash ("Base Layer.Dying");
deadBool = Animator.StringToHash ("Dead");
locomotionState = Animator.StringToHash("Base Layer.locomotion");
ReloadState = Animator.StringToHash("Reloading.Reload");
speedFloat = Animator.StringToHash("Speed");
ReloadingBool = Animator.StringToHash("Reloading");
FiringBool = Animator.StringToHash ("Firing");
playerInsigthBool = Animator.StringToHash("PlayerInSight");
shotfloat = Animator.StringToHash("Shot");
aimWeightfloat = Animator.StringToHash ("AngularSpeed");
openBool = Animator.StringToHash ("Open");
}
}
and the player movement scripts
using UnityEngine; using System.Collections;
public class PlayerMovement : MonoBehaviour { public AudioClip FiringClip; public float turnSmoothing = 15f; public float speedDampTime = 0.1f;
private Animator anim;
private HashIDs hash;
void Awake()
{
anim = GetComponent<Animator> ();
hash = GameObject.FindGameObjectWithTag("gameController").GetComponent<HashIDs>();
anim.SetLayerWeight(1, 1f);
}
void FixedUpdate()
{
float h = Input.GetAxis ("Horizontal");
float v = Input.GetAxis ("Vertical");
bool Firing = Input.GetButton("Firing");
MovementManagement(h, v, Firing);
}
void Update()
{
bool Firing = Input.GetButton("Attract");
anim.SetBool (hash.FiringBool, Firing);
AudioManagement (Firing);
}
void MovementManagement(float horizontal, float vertical, bool Firing)
{
anim.SetBool(hash.FiringBool, Firing);
if (horizontal != 0f || vertical != 0f)
{
Rotating (horizontal, vertical);
anim.SetFloat (hash.speedFloat, 2.8f, speedDampTime, Time.deltaTime);
}
else
{
anim.SetFloat (hash.speedFloat, 0f);
}
}
void Rotating(float horizontal, float vertical)
{
Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up);
Quaternion newRotation = Quaternion.Lerp(GetComponent<Rigidbody>().rotation, targetRotation, turnSmoothing * Time.deltaTime);
GetComponent<Rigidbody>().MoveRotation (newRotation);
}
void AudioManagement(bool firing)
{
if(anim.GetCurrentAnimatorStateInfo(0).nameHash == hash.locomotionState)
{
if (!GetComponent<AudioSource>().isPlaying)
{
GetComponent<AudioSource>().Play ();
}
}
else
{
GetComponent<AudioSource>().Stop();
}
if (firing)
{
AudioSource.PlayClipAtPoint(FiringClip, transform.position);
}
}
}
i don't know what's wrong i really need your helping i am working on this game for while unity3d keep blocking my question and my i just want to know if some thing wrong with my scripts or the animator controller you seems when i put speed to 1.0 on parameter character seems to be moving on it own
here some image of my animator controller i don't really know how to control the animator with scripts that the problem. http://imgh.us/Capture_4909.png http://imgh.us/Capture1_83.png http://imgh.us/Capture3_40.png