无法在一个Object Unity3D上播放3种动画

时间:2019-05-20 15:15:10

标签: c# unity3d

我想在一个立方体上播放3个动画,当检查一个条件时,应该播放第一个动画,然后当检查第二个条件时,则要播放第二个动画,最后一个要播放相同的东西。

因此,我创建了3个动画并将它们作为旧版,然后将动画组件附加到多维数据集,然后将动画添加到其中。我在下面的脚本中遇到的问题是,第一个动画可以正常工作,而其余两个动画却不能。我该怎么做才能解决此问题?

Animation CubeRot;
    bool Rot = false;

    // Use this for initialization
    void Start () {

        CubeRot = gameObject.GetComponent<Animation>();
    }

    // Update is called once per frame
    void Update () {

        if (FindObjectOfType<HoseController>().Rotated1 == true)
        {
            if (!Rot)
            {
                CubeRot.Play("Rot1");
                Rot = true;
            }
        }
        if (FindObjectOfType<HoseController>().Rotated2 == true)
        {
            if (!Rot)
            {
                CubeRot.Play("Rot2");
                Rot = true;
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

是因为您在第一次更新中设置了Rot = true;。然后第二次更新要求Rot变量为false,但是从第一次更新起它仍然适用吗?

答案 1 :(得分:1)

第一: 如果两种情况都要求Rot均为false。

第二: 如果Rotated1为true,则第一部分将循环(因为您处于Update中),并且由于未将其设置为false,因此它将继续循环。 您甚至可以避免同时使用Rotated1和Rot

此外,您还应避免使用旧版动画组件。在新的Animator组件中执行相同的行为应该很容易

最后避免每次都使用FindObjectOfType