我有一个装有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");
}
}
一些截图: