Показать сообщение отдельно
Старый 27.07.2009, 10:35   #3
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Это касается Анимации)))

Юзай переменные состояния, в которые заноси номер текущего состояния персонажа, и таймеры (переменная-счетчик) для всех своих состояний героя.

Например у тебя персонаж стоит спокойно, никого не трогает. Переменная его состояния равна 0. Затем ты нажимаешь кнопку, переменная состояния меняется на 1, и пока проигрывается анимация или еще что состояния равно 1. Как только допустим заканчивается анимация удара, состояние переходит в 2 и переменной-таймеру присваивается допустим значение 100, после чего таймер начинает уменьшаться на 1 каждый цикл. Пока переменная-таймер > 0, персонаж находится в состоянии 2, в этом состоянии проигрывается анимация встревоженного стояния после атаки. Затем если переменная-таймер доходит до 0, состояние персонажа тоже меняется на 0 и врубается анимация простого спокойного стояния. Если же допустим во время таймера игрок нажал кнопку атаки еще раз, то состояние персонажа переходит в, допустим, 3 и проигрывается анимация второго удара, который входит в комбо-связку с первым. Ну а дальше так же как с первым ударом.

Кстати, проверяя текущее состояние можно например ограничить реакцию героя на нажатие игроком клавиш управления. Например если герой в состоянии 0, им можно управлять на WASD, если он вошел в состояние 1, то он проигрывает анимацию и не реагирует на попытки игрока заставить его куда-то бежать. Если же например в состоянии 2 и игрок нажимает любую кнопку движения - это принудительно возвращает переменную-таймер в 0 и соответственно сдвинувшись с места герой автоматически переходит в состояние 0 и комбо атаки уже не получится. Ну и в таком же духе

Последний раз редактировалось Amatsu, 27.07.2009 в 10:43.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Amatsu за это полезное сообщение:
Colossus (27.07.2009), DeadElf (27.07.2009)