timer += Time.deltaTime; if(timer>=2) { int n = Random.Range(0, 4); ani.SetInteger("RandowAnim",0); ani.SetInteger("RandowAnim", n); timer = 0; }为什么动画状态不会返回到0
时间: 2023-12-14 08:37:15 浏览: 108
JS-Timer.zip_ JS Timer_js Timer.js_js timer_timer.js
根据你提供的代码,我假设你是使用Unity开发游戏,并且ani是Animator组件。在你的代码中,每当timer计时器的时间超过2秒时,你会随机选择一个0到3之间的整数n,并将其设置为"RandomAnim"的Animator参数。然后,你将计时器重置为0。
在这个过程中,每次调用ani.SetInteger("RandomAnim", n)都会立即更改Animator的状态机,因此你看到的动画状态不会返回到0状态。如果你想使动画状态返回到0状态,请尝试在调用ani.SetInteger("RandomAnim",0)之前添加一些延迟,例如:
```csharp
timer += Time.deltaTime;
if(timer >= 2)
{
int n = Random.Range(0, 4);
ani.SetInteger("RandomAnim", n);
timer = 0;
StartCoroutine(ResetAnimationState());
}
IEnumerator ResetAnimationState()
{
yield return new WaitForSeconds(0.1f);
ani.SetInteger("RandomAnim", 0);
}
```
这里使用了一个协程(Coroutine),在随机动画状态之后,等待0.1秒钟,然后再将Animator参数设置回0,这样就可以让动画状态返回到0状态了。
阅读全文