Unity3D Animator控制器状态出现问题

时间:2018-06-04 09:51:04

标签: c# animation unity3d

我有一个装有Rigidbody,Collider和Animator组件的物体(一张简单的卡片)。特别是,Animator执行两个简单的剪辑:封面揭开,将卡片旋转180度。第一个从0度开始到180度,第二个从180度到0度。

因此剪辑应覆盖或揭开卡片。问题是卡片恢复到原始状态。

例如,卡片的原始状态是"未覆盖状态"所以当我点击它以按预期覆盖它时。我注册了州"覆盖"编程。但是,在动画结束后立即返回其原始状态(未覆盖)。该卡现在有一个内部(C#变量)状态为"覆盖",但我看到它仍然被发现。当我再次点击它时,将触发正确的动画片段:"揭开"。

我应该怎么做才能在第一次点击时将其覆盖?

我在这里上传了一个显示卡行为的短片,下面还有一些截图,这些截图引用了可能包含有用信息的IDE的各种视图。视频剪辑暂时上传到Dropbox。

行为视频:Dropbox link

翻转脚本的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Flip : MonoBehaviour {

    private Animator anim;
    private enum cs_e {covered, uncovered};
    private cs_e coveringState;

    // Use this for initialization
    void Start () {
        anim = this.GetComponent<Animator>();
        coveringState = cs_e.uncovered;
    }

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

    }

    private void OnMouseUp()
    {
        Debug.Log("Mouse up");


        if (coveringState == cs_e.uncovered)
        {
            anim.Play("Cover");
            coveringState = cs_e.covered;
        } else {
            anim.Play("Uncover");
            coveringState = cs_e.uncovered;
        } 

    }

    private void OnMouseDown()
    {
        Debug.Log("Mouse down");
    }

    private void MouseDrag()
    {
        Debug.Log("Mouse drag");
    }
}

一些截图:

enter image description here

enter image description here

enter image description here

enter image description here

0 个答案:

没有答案