Временная шкала Unity, воспроизведение анимационных клипов и управление воспроизведением событий - PullRequest
0 голосов
/ 06 февраля 2020

Мне интересно, могу ли я получить некоторую помощь в понимании того, как использовать временную шкалу

Я планирую, чтобы персонаж шел по пути с триггерами, которые активируют временную шкалу,

Я настроил на обезьяне простой конечный автомат , который будет запускаться путем воспроизведения временной шкалы, эта часть работает нормально, и я вижу, как запускаются события

Как я могу играть часть временной шкалы при срабатывании (это вообще возможно?), где удерживается вся последовательность Walk> Jump> Walk> Look> Walk> Idle

Или что мне нужно сделать, чтобы добиться воспроизведения клип / или часть последовательности клипов

На обезьяне:

 public enum State
 {
    WalkHappy,
    Look,
    Jump,
 }

 IEnumerator WalkHappyState()
 {
    Debug.Log("WalkHappy: Enter");
    **//walk sequence with timeline here??**

    while (state == State.WalkHappy)
    {
        yield return 0;
    }
    Debug.Log("WalkHappy: Exit");
    NextState();
}

Вызывается на слушателе событий пути при срабатывании

private void OnCustomEvent(string eventname)
{
    if (eventname.Contains("MonkeyRunningJumpUp"))
    {
          GameObject tempMonkey = GameObject.FindGameObjectWithTag("Player");
          Monkey tempMonkeyState = tempMonkey.GetComponent<Monkey>();
          tempMonkeyState.state = Monkey.State.Jump;

    }
  }

enter image description here

Я видел возможность контролировать начало воспроизведения на временной шкале, но я не знаю, как форсировать диапазон / клип для воспроизведения, а затем сделать паузу в конце клипа, а не в конце вся последовательность

Вопрос в том ... как остановить / приостановить воспроизведение в конце клипа, чтобы возобновить позже?

   playableDirector = myPlayableDirectorGO.GetComponent<PlayableDirector>();
    Debug.Log(timeLinePosition);
    playableDirector.time = timeLinePosition / ((TimelineAsset)playableDirector.playableAsset).editorSettings.fps;
    playableDirector.RebuildGraph();
    playableDirector.Play();

с благодарностью Натал ie: )

1 Ответ

1 голос
/ 06 февраля 2020

Прежде всего, я рекомендую установить Воспроизводимые по умолчанию , если вы еще этого не сделали.

Используйте Сигналы временной шкалы и маркеры, чтобы что-то делать на конец срока или в определенный момент. Также существует событие PlayableDirector.stopped .

Вы можете использовать pause и возобновить методы;

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