Проблемы с состояниями контроллера Unity3D Animator - PullRequest
0 голосов
/ 04 июня 2018

У меня есть объект (простая карта), оснащенный компонентами 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");
    }
}

Некоторые скриншоты:

enter image description here

enter image description here

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...