我有一个动画师,其中有一个动画状态设置为循环。我想控制它玩3次或一次。怎么做?
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
int normalizedTime = Convert.ToInt32((stateInfo.normalizedTime));
if (normalizedTime == animator.GetInteger(PlayTimes))
{
animator.SetBool("ToNextState", true);
}
}
我尝试通过这种方式来做,但我认为它并不完美,因为有时这个动画无法准确停止。
动画结束时是否触发了事件?
答案 0 :(得分:0)
你不能只在游戏对象里面使用一个计数吗?设置int
并为其提供动画循环3
的次数,然后在动画开始时将代码集animationRan
变量设置为0.现在在动画窗口中放置一个函数在动画结束时调用,它会增加animationRan
变量。
然后在动画开始时进行方法调用以检查animationRan
是否已达到限制,如果是,则执行某些操作
像这样的东西
...
public int animationLimit = 3;
public int animationRan = 0;
....
public void OnAnimationStart()
{
animationRan = 0;
}
public void OnAnimationEnd()
{
if(animationRan < animationLimit)
{
Animation.Stop();
}
}