У меня есть объект (простая карта), оснащенный компонентами Rigidbody, Collider и Animator.В частности, Animator выполняет два простых клипа: Cover и Uncover , который поворачивает карту на 180 градусов.Первый начинается от 0 градусов до 180, второй - от 180 до 0.
Таким образом, клипы должны закрывать или раскрывать карту.Проблема в том, что карта возвращается в исходное состояние.
Например, исходное состояние карты является «непокрытым состоянием», поэтому, когда я нажимаю на нее, она закрывает крышки, как и ожидалось.Я регистрирую состояние "накрыто" программно.Однако сразу после окончания анимации она возвращается в исходное состояние (непокрытое).Карта теперь имеет внутреннее состояние (переменная C #) как «закрытое», но я вижу, что оно все еще не обнаружено.Когда я щелкну по нему еще раз, будет запущен правильный анимационный клип: «uncover».
Что я должен сделать, чтобы оставить его закрытым при первом нажатии?
Я загрузил здесь короткий клипэто показывает поведение карты, также ниже приведены некоторые скриншоты, которые относятся к различным представлениям 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");
}
}
Некоторые скриншоты: