SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Взятие крайнего левого кадра из спрайта (урок 7)
Помечено: sfml, Анимация, раскадровка, урок 7
В этой теме 1 ответ, 1 участник, последнее обновление M0zg 6 года/лет, 10 мес. назад.
-
АвторСообщения
-
Всем привет. Помогите разобраться с раскадровкой. (урок 7 SFML)
Вот код из урока:
C++12345if ((Keyboard::isKeyPressed(Keyboard::Left) || (Keyboard::isKeyPressed(Keyboard::A)))) { //если нажата клавиша стрелка влево или англ буква АCurrentFrame += 0.005*time; //служит для прохождения по "кадрам". переменная доходит до трех суммируя произведение времени и скорости. изменив 0.005 можно изменить скорость анимацииif (CurrentFrame > 3) CurrentFrame -= 3; // если пришли к третьему кадру - откидываемся назад.herosprite.setTextureRect(IntRect(96 * int(CurrentFrame), 96, 96, 96)); //проходимся по координатам Х. получается начинаем рисование с координаты Х равной 0,96,96*2, и опять 0herosprite.move(-0.1*time, 0);//происходит само движение персонажа влевоПредставим наш спрайт (тот самый кот).
Далее из данной строчки кода
C++1herosprite.setTextureRect(IntRect(96 * int(CurrentFrame), 96, 96, 96));вроде бы ясно, что то мы извлекаем ВАЖНО! тайл из второй ряда, второе изображение (см.вложение)
Тут всё ясно.
Теперь вопрос:
Как быть с анимацией, если у меня 1 кадр находится в крайнем левом углу спрайта т.е. начальные координаты x=0 и y=0?
Ведь получается что я должен умножать на 0 в этом выражении:
C++1herosprite.setTextureRect(IntRect(0* int(CurrentFrame), 160, 96, 96));Если вопрос не совсем ясен, то переформулирую его так:
У меня во вложении есть файл cadr.png
Как сделать так, чтобы при нажатии кнопки “вправо”, первый кадр был “Кадр 1″, второй “Кадр 2″ и третий соответственно “Кадр 3″.
Спасибо за помощь.
Вложения:
You must be logged in to view attached files.Народ, разобрался. Почитал комментарии и проблема решилась.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.