As stated in the question I've this problem: I'm using Unity and when playing an animation my character moves from point A to point B without my consent. Here's the code:
public class Walk : MonoBehaviour {
private Animator humanAnimator;
private iInputProvider input;
private void Start()
{
input = new KeyBoardInput();
humanAnimator = GetComponent<Animator>();
walkMe = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
walk();
}
private void walk()
{
InputWrapper inputWrp = input.GetInputValues();
animateWalk(inputWrp.verticalMove);
}
private void animateWalk(float verticalMove)
{
if (-0.1 <= verticalMove && verticalMove <= 0.1) //stand still
{
humanAnimator.SetBool("Walk", false);
Debug.Log(humanAnimator.GetBool("Walk"));
}
else if (verticalMove > 0.1) // animate walk forward if the player is walking forward
{
humanAnimator.SetBool("Walk", true);
Debug.Log(humanAnimator.GetBool("Walk"));
}
else if (verticalMove < -0.1)
{
// walk backward animation needed
}
}
}
Note that nowhere in the code I change the object position, i just start the animation. Here's the result:
https://i.sstatic.net/vYDvT.jpg
note that it's not the effect of the gif, the character actually resets its position after the animation is terminated. I was expecting the character to "run on the place". Anybody has some idea how can I fix this?
EDIT: if I uncheck the "Apply root motion" check box I've this result: https://i.sstatic.net/ouZxp.jpg . Maybe it could be useful to know that I can't click on "Generate root motion curve" in my animation inspector because it's all uneditable: https://i.sstatic.net/Lsd9W.jpg