我使用了一些来自mixamo的动画,并成功地将它们实现给了统一动画师,在那里我设置了所有不同的状态。当我从空闲状态转到运行状态时,就会出现问题。运行中的动画活动了几秒钟,但随后冻结,直到我停止角色,并返回到空闲状态。有人知道它可能来自什么吗?)
以下是与代码不同状态的Move函数和函数。
private void Move()
{
float moveZ = Input.GetAxis("Vertical");
float moveX = Input.GetAxis("Horizontal");
moveDirection = new Vector3(moveX, 0, moveZ);
moveDirection = transform.TransformDirection(moveDirection);
if (moveDirection != Vector3.zero && !Input.GetKey(KeyCode.LeftShift))
{
Walk();
}
else if (moveDirection != Vector3.zero && Input.GetKey(KeyCode.LeftShift))
{
// Debug.Log("Pressed shift");
Run();
}
else if (Input.GetKeyDown("space"))
{
Jump();
}
else if (moveDirection == Vector3.zero)
{
Idle();
}
moveDirection *= moveSpeed;
controller.Move(moveDirection * Time.deltaTime);
}
private void Idle()
{
anim.SetInteger("state", 0);
}
private void Walk()
{
moveSpeed = walkSpeed;
anim.SetInteger("state", 1);
}
private void Jump()
{
anim.SetInteger("state", 2);
}
private void Run()
{
moveSpeed = runSpeed;
anim.SetInteger("state", 3);
}
}
-我已经在动画师编辑器中查看了退出时间.-我把所有的动画都设为“循环时间”。
发布于 2022-11-04 07:38:35
最好使用anim.SetTrigger("ParameterName")
而不是anim.SetInteger()
,只需调用anim.ResetTrigger("ParameterName")
来停止当前动画,然后启动一个新动画。
另外,它可能导致您的问题是,您使用相同的“状态”参数为您的所有动画。
如果你可以发布一个动画屏幕的截图,包括你所创建的所有参数,那将是很有帮助的。
https://stackoverflow.com/questions/74313477
复制相似问题