- Home /
Why when creating new animator controller for the character the character is not walking right ?
I created a new controller called it SoldierController and dragged it to the character Controller under Animator component in the Inspector.
Also unchecked Apply Root Motion
Then attached a new script to the third person character called the script Soldier.
Then i set the animator controller i added to it two new States: Walk and Idle. HumanoidIdle and HumanoidWalk.
Then i did that the default start state will be Idle. Set StateMachine Default State.
Then i did a Transition from Walk to Idle. This way when i press on W it's start walking a bit then it keep moving the character but without the walking animation.
If i delete this transition and make transition from the Idle to Walk then when i press on W it will walk but then if i leave W key and it's idling then after 2-3 seconds the character will walk on place i mean it will animate walking without moving and i'm not pressing anything it's starting automatic when idling.
The character had another animator controller but i created a new one and using only the new one.
The script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Soldier : MonoBehaviour
{
private bool _isWalking = false;
private Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
var x = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f;
transform.Rotate(0, x, 0);
if (Input.GetKey("w"))
{
if (!_isWalking)
{
_isWalking = true;
anim.Play("Walk");
}
var z = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;
transform.Translate(0, 0, z); // Only move when "w" is pressed.
}
else
{
if (_isWalking)
{
anim.Play("Idle");
}
_isWalking = false;
}
}
}
I found that if i remove delete the transition between the idle and walk it will work fine. But i also noticed that i could keep the transition and use parameter and then update the parameter in the script and it will work too. So when should i use parameter/s ? And when not ?