示例:
在动画师中,有两种状态:空闲,攻击。
在动画过渡设置中:
默认 - >空闲
攻击(退出时间为1) - >空闲
目标:
我想在点击鼠标时播放攻击动画。
问题:
使用animator.Play("attack");
将成功触发攻击状态,但是当我立即点击鼠标时,如果处于攻击状态的动画尚未完成,则不会再次触发。
我搜索了一段时间,才发现这个: http://answers.unity3d.com/questions/787605/mecanim-equvalent-of-animationstop.html
如何解决这个问题?谢谢!
答案 0 :(得分:0)
你在动画师中有任何状态,我认为你可以将你的攻击状态附加到那个状态。在参数中添加一个bool,让它从“任何状态”进入攻击状态。您可以在代码中设置bool。不要忘记也为空闲添加一个出口。 所以它看起来像这样:
任何州 - >攻击 - >空闲< - 默认
或类似的东西
答案 1 :(得分:0)
解决此问题的一个想法是在播放(“攻击”)之前调用播放(“空闲”)。国家将进入闲置状态然后立即转入攻击。但是,以下代码无效。
public void PlayAttackAnimation()
{
animator.Play("idle");
animator.Play("attack");
}
我已经采用了一种方法使其工作如下。
bool playAttack = false;
public void PlayAttackAnimation()
{
animator.Play("idle");
attackAnimFlag = true;
}
void LateUpdate()
{
if (attackAnimFlag)
{
attackAnimaFlag = false;
animator.Play("attack");
}
}
这适用于Unity 5.2.2f1,但感觉很糟糕。
注意:它只能使用LateUpdate(),如果您将第二部分更改为Update(),它将无法正常工作。我不知道为什么,猜测Unity必须做一些与动画师状态相关的事情在Update()和LateUpdate()之间改变。