您好,我有一个问题,为什么即使我没有检查动画循环时间并使用布尔值来控制发生的情况,动画仍会继续循环播放。下面是使我的机器人死亡的代码以及Mechanim的屏幕截图。
ZoltainHealth.cs
void Update () {
if (!isAlive(ZoltainHealthSlider.value)) {
isDead = true;
gameObject.GetComponent<Animator>().SetTrigger("Die");
if (isDead) {
isDead = false;
gameObject.GetComponent<Animator>().SetTrigger("Alive");
reset(gameObject, startingPos, gameObject.tag);
gameObject.GetComponent<Slider>().value = 100f;
}
}
}
我得到的基类Characters.cs是Alive()
public bool isAlive(float life) {
bool isAlive = true;
int health = Mathf.RoundToInt(life);
if (health <= 0) {
isAlive = false;
}
return isAlive;
}
Mechanim的屏幕截图:Screenshot
我也遇到了问题,如果Zoltan死了之后重新生成Zoltan以开始新游戏(如下面的if(isDead)代码所示),则运行状况滑块会重置为全额费用。
答案 0 :(得分:0)
我假设您正在尝试播放Die
动画,然后播放Alive
动画并重置状态。
然后下面的代码就可以完成工作。
void Update () {
if (!isAlive(ZoltainHealthSlider.value)) {
StartCoroutine (WaitDieAnimationFinishAndPlayAlive);
}
}
private void WaitDieAnimationFinishAndPlayAlive () {
yield return new WaitForSeconds(DieAnimationTime);
gameObject.GetComponent<Animator>().SetTrigger("Alive");
StartCoroutine (WaitAliveAnimationFinishAndReset);
}
private void WaitAliveAnimationFinishAndReset () {
yield return new WaitForSeconds(AliveAnimationTime);
reset(gameObject, startingPos, gameObject.tag);
gameObject.GetComponent<Slider>().value = 100f;
}
我不确定您遇到的动画循环问题是否是由在同一Die
帧处设置Alive
和Update
触发器引起的。