wickedweasel
@wickedweasel

Как блокировать UI во время анимаций и действий противников в карточных/пошаговых играх?

Обдумываю создание простой карточной однопользовательской (против ботов) игры на Unity3d. Для простоты пусть это будет карточная игра "дурак". Ничего серьезного на Unity3d еще не писал.
Вызывает затруднения вопрос блокирования действий пользователя при наличии последовательности автоматических действий, вдобавок сопровождающихся анимациями.
Например, после того, как походил игрок, нужно совершить такие действия:
1) показать анимацию улетающей на стол карты
2) после завершения анимации ход переходит к боту
3) бот некоторое время "думает"
4) бот бъёт карту игрока, это сопровождается анимацией вылета ее на стол
5) ожидание в течение нескольких секунд
6) карты улетают в биту
7) игрокам раздаются новые карты, в идеале посредством нескольких параллельных анимаций
8) бот некоторое время "думает"
9) бот ходит, это сопровождается анимацией вылета ее на стол
10) ход переходит в игроку, в этот момент надо разблокировать UI

Хотелось бы узнать рекомендации:
а) Стоит ли заводить для этого FSM с длительными промежуточными состояниями типа "анимированная раздача карт игрокам"?
б) Как лучше сделать управление параллельными анимациями? Старты и задержками и ожидание завершения всех анимаций. Стоит ли мудрить с yield WaitForSeconds? Потребуется ли заводить счётчик активных на данный момент анимаций?
в) Непосредственно управление блокировкой UI. Пока что самое простое, что приходит в голову - иметь глобальный флаг "ожидаем действие игрока" (соотв-но, в пунктах 2..9 он будет равен false) и проверять его непосредственно при обработке кликов игрока.
  • Вопрос задан
  • 3139 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы