Unity3d 如果满足某些条件,是否激活Unity动画?

Unity3d 如果满足某些条件,是否激活Unity动画?,unity3d,animation,triggers,game-engine,animator,Unity3d,Animation,Triggers,Game Engine,Animator,我正在Unity开发一个2d游戏,遇到了一个问题。当出于某种原因尝试为我的一个动画创建动画过渡时,Unity会立即或非常快地禁用我的动画(比如在我激活动画后不到一秒钟)。然而,当我没有过渡到动画时,动画效果很好。但是,我需要能够在满足特定条件后将游戏对象转换回动画之前的状态,因此我不能让动画继续运行。有人知道我如何解决这个问题吗 我试着切换我激活动画的方式,看看它是否与此相关,方法是同时尝试bool和trigger作为条件,确定何时应该发生转换,但出现相同的问题 这是我如何激活动画的大致轮廓 p

我正在Unity开发一个2d游戏,遇到了一个问题。当出于某种原因尝试为我的一个动画创建动画过渡时,Unity会立即或非常快地禁用我的动画(比如在我激活动画后不到一秒钟)。然而,当我没有过渡到动画时,动画效果很好。但是,我需要能够在满足特定条件后将游戏对象转换回动画之前的状态,因此我不能让动画继续运行。有人知道我如何解决这个问题吗

我试着切换我激活动画的方式,看看它是否与此相关,方法是同时尝试bool和trigger作为条件,确定何时应该发生转换,但出现相同的问题

这是我如何激活动画的大致轮廓

public class InteractControl : MonoBehaviour, IPooledObject
{ 
    public static float timeLeft = 10f;

    public void OnObjectSpawn()
    {
        anim = GetComponent<Animator>();
    }

    // Change this method to just be a temporary obstacle
    void Update() 
    {
        timeLeft -= Time.deltaTime;

        if (timeLeft > 0)
        {
            anim.enabled = true;
        }


        if (timeLeft < 0)
        {
            anim.SetTrigger("FollowAd");
        }
    }
}

如上图所示,它工作不到一秒钟或根本不工作,然后直接切换回默认状态。只有当
timeLeft<0

您可以为所需动画创建
公共运行时动画控制器animCon
时,它才应切换回。当你的条件得到满足时。您可以执行
anim.runtimeanimatorcontroller=animCon


当条件为false时,执行以下操作:anim.runtimeanimatorcontroller=null。这不是最好的方法,但它比大多数方法更快更好。

您能显示过渡的设置吗?还要注意的是,在
timeLeft<0
期间,您每帧都会调用
SetTrigger
。。在转换过程中,您的触发器也无法正确重置。您可以使用
anim.ResetTrigger(“FollowAd”)避免它if(timeLeft>0)
中的code>@derHugo我为动画添加了一个过渡设置的打印屏幕,我说我想主要的问题是你继续触发
anim.ResetTrigger(“FollowAd”)
尝试禁用它,并确保在启动动画时,它只被类似于
private bool triggerFollowAd的标志调用一次
将其设置为true
triggerFollowAd=true;anim.enabled=true
然后检查它,并将其设置为false,就像(time<0&&triggerFollowAd){triggerFollowAd=false;anim.SetTrigger(“FollowAd”);}
@derHugo我创建了一个私有int,在其字段初始化时设置为1,然后在访问anim.ResetTrigger后立即递增,但它仍然不起作用。如果(triggerFollowAd==1){anim.enabled=true;triggerFollowAd++;}游戏对象的行为就像根本没有动画一样
anim.SetTrigger("FollowAd");