c# - Unity3D Animator 控制器状态的问题
问题描述
我有一个配备了刚体、碰撞器和动画器组件的对象(一张简单的卡片)。特别是,Animator 执行两个简单的剪辑:将卡片旋转 180 度的Cover和Uncover。第一个从 0 度到 180 度,第二个从 180 度到 0 度。
所以夹子应该盖住或揭开卡片。问题是卡恢复到原来的状态。
例如,卡片的原始状态是“未覆盖状态”,因此当我单击它以覆盖它时,它会按预期覆盖。我以编程方式注册“覆盖”状态。但是,在动画结束后,它会立即返回其原始状态(未覆盖)。该卡现在具有“已覆盖”的内部(C# 变量)状态,但我认为它仍然未被覆盖。当我再次单击它时,将触发正确的动画剪辑:“发现”。
我应该怎么做才能在第一次点击时将其覆盖?
我在这里上传了一个显示卡行为的短片,下面还有一些截图,这些截图指的是 IDE 的各种视图,可能有有用的信息。视频剪辑暂时上传到 Dropbox。
行为视频:Dropbox 链接
Flip脚本的代码:
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");
}
}
一些截图:
解决方案
推荐阅读
- javascript - 如何使用jQuery获取数据ID与当前关注的字段数据ID相同的所有数据ID输入类值?
- c++ - 我正在尝试在 C++ 中创建一个表,但分隔列的行没有对齐
- android - 开启移动数据时在 WiFi 网络上使用静态 IP 连接套接字
- javascript - 如何在页面中打开具有多个 jstree 的 jstree 特定节点
- c++ - 如何将 boost 多精度整数从小端转换为大端?
- ios - 当我更新 Xcode 时,在我的应用程序中,我的根视图控制器可以在当前视图的顶部看到
- javascript - JS如何过滤数组内容不混淆
- java - Java,为什么这个文本没有在直列中对齐?
- c++ - CPP 代码在 VScode 中与 Windows 10 中的 Mingw-w64 链接
- python - python中如何使用tflearn模型进行blob图像处理