如何使用脚本在 unity5 中触发相同的动画师状态?
How to trigger the same animator state in unity5 with script?
示例:
动画师有两种状态:空闲、攻击。
在动画过渡设置中:
默认 -> 空闲
攻击(退出时间为 1)-> 空闲
目标:
我想在点击鼠标时播放攻击动画。
问题:
使用animator.Play("attack");
会成功触发攻击状态,但是当我马上点击鼠标时,如果攻击状态的动画还没有结束,就不会再触发了。
我找了一段时间,只找到了这个:
http://answers.unity3d.com/questions/787605/mecanim-equvalent-of-animationstop.html
如何解决这个问题?谢谢!
你在动画师的东西里有一个任何状态,我想你可以把你的攻击状态附加到那个上。在参数中添加一个布尔值,让它从 'any state' 变为你的攻击状态。您可以在代码中设置 bool。不要忘记也为空闲添加一个出口。
所以它看起来像这样:
任意状态 -> 攻击 -> 空闲 <- 默认
或类似的东西
解决这个问题的一个方法是在 Play("attack") 之前调用 Play("idle")。状态将转变为空闲状态,然后立即转变为攻击状态。但是下面的代码 不起作用 .
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() 之间变化有关的事情。
示例:
动画师有两种状态:空闲、攻击。
在动画过渡设置中:
默认 -> 空闲
攻击(退出时间为 1)-> 空闲
目标:
我想在点击鼠标时播放攻击动画。
问题:
使用animator.Play("attack");
会成功触发攻击状态,但是当我马上点击鼠标时,如果攻击状态的动画还没有结束,就不会再触发了。
我找了一段时间,只找到了这个: http://answers.unity3d.com/questions/787605/mecanim-equvalent-of-animationstop.html
如何解决这个问题?谢谢!
你在动画师的东西里有一个任何状态,我想你可以把你的攻击状态附加到那个上。在参数中添加一个布尔值,让它从 'any state' 变为你的攻击状态。您可以在代码中设置 bool。不要忘记也为空闲添加一个出口。 所以它看起来像这样:
任意状态 -> 攻击 -> 空闲 <- 默认
或类似的东西
解决这个问题的一个方法是在 Play("attack") 之前调用 Play("idle")。状态将转变为空闲状态,然后立即转变为攻击状态。但是下面的代码 不起作用 .
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() 之间变化有关的事情。