SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Урок 31. Меню.
В этой теме 2 ответа, 3 участника, последнее обновление Serob 4 года/лет, 8 мес. назад.
-
АвторСообщения
-
В 31 уроке есть такой баг. Когда только открываешь программу, то меню показывается нормально. Когда нажимаешь Новая Игра, то суть в том что координаты View зависят от позиции игрока. Я дописал кусочек кода чтобы при нажатии в игре на Escape опять появлялось меню.
C++1234567891011121314while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();if (event.type == sf::Event::KeyPressed){if (event.key.code == sf::Keyboard::Escape){menu(window);}}Но произошло следующее. Когда я нажимал в игре на Ecape то видел такую картину.
http://s018.radikal.ru/i523/1602/d1/8436901b3749.jpg
После минут 10 разбирательств, понял что когда начинается уровень, то View устанавливается в месте где игрок.
C++1window.setView(view);А вначале int main()
Пишется код для установки позиции View в начало координат.
C++1view.reset(FloatRect(0, 0, 640, 480));Значит и в цикле Меню нужно проделать тоже самое. Устанавливать View в начало координат.
C++1234while (isMenu){view.reset(FloatRect(0, 0, 640, 480));window.setView(view);То есть сначала View сбрасывается на начало координат с размерами 640 на 480.
А следующей строкой уже задействуется вывод в окно Window.
P.S. Во вложении пример того как съехало меню после нажатия Escape из игры
Вложения:
You must be logged in to view attached files.Так в итоге разобрался или помощь нужна?)
тоже столкнулся с такой проблемой.
для тех кто не понял о чём речь повторюсь, есть игровая карта она длинная и окно view перемещается по нему за игроком, а фон меню и кнопки находятся в самом начале этой карты, то есть если персонаж отойдёт от левого края и нажать на Esc, то мы увидим только часть меню, поскольку view сместилось за персонажем.
может я не прав, но сделал следующим образом:
у меня есть класс описывающий окноC++123456789101112131415// размер камеры (окна) задаётся один раз, и можно привязывать изменение текстур к переменнымint vidX = 640;int vidY = 480;......int screen_0::Run(sf::RenderWindow &App){// здесь добавляю новое view, что бы при нажатии на Esc оно сработалоView viewMenu(FloatRect(0, 0, vidX, vidY));......//в конце добавляем для устанавки окно по центру, что бы меню отображалосьApp.setView(viewMenu);...... -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.