SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Работа с состоянием персонажа › Ответ в теме: Работа с состоянием персонажа
Твоя самая главная ошибка, что ты копируешь и не смотришь что копируешь. Твоя ошибка находится тут:
C++
1 2 3 4 5 6 |
if (key["L"]) { dir = 1; if (STATE != duck) dx = -0.1; // если мы сели, то мы не передвигаемся if (STATE != stay) STATE = walk; //ОШИБКА! (если мы находились в состоянии stay,то переходим в состояние walk) } |
Измени условие в ошибочной строке на: if (STATE == stay) state = walk;
Сейчас у тебя получается что игрок должен уже не стоять чтобы состояние изменилось на walk. А поскольку ты из стоячего положения идешь, то ты STATE не меняешь он все время остается stay, и ты никак не можешь его переключить на walk.
Ну а вообще у тебя слишком сложная задача состояний, есть много возможностей где-то ошибиться в ней. Можно сделать меньше строчек и менее забагованой.