Созданные ответы форума
-
АвторСообщения
-
Спасибо большое)
Попробую разобраться
Скиньте код)
По моему тут был урок по подключению и пользованию 2дбокса. Тем более наверняка можно загуглить
В общем, сделал по своему, но за идею огромное спасибо. Не сделал так как вы предложили, только из за того что не опытен и не очень знаю, как это правильно написать. Но суть понял.
Итак, если кому то понадобится, вот мой код реализации прорисовки карты, только “в” камере вида:
C++1234567891011121314Vector2f center = window.getView().getCenter();Vector2f size = window.getView().getSize();// проход по массиву мапыfor (int i = (center.y - size.y / 2) / 128; i <= (center.y + size.y / 2) / 128; i++)for (int j = (center.x - size.x / 2) / 128; j <= (center.x + size.x / 2) / 128; j++)// все делю на 128, потому что цикл должен проходить по клеткам карты (т.е. массива), а не по пикселям// а текстура для каждой клетки у меня как раз 128 пикселей{if (map[i][j] == 0) spriteMap.setTextureRect(IntRect(0, 0, 128, 128)); // присвоение текстурыspriteMap.setPosition(j * 128, i * 128);window.draw(spriteMap);}По сути, функция должна быть в цикле. Вернее ее вызов
Это было так очевидно 😀
Спасибо большое, сам бы не дошел до этого)
Именно, прорисовка вне камеры вида. А вы не могли бы подкинуть идею, как прорисовывать только то, что я вижу?
В коде смотреть нечего, просто цикл который проходит по всем элементам массива, чекая id каждой клетки карты. Дальше в связи с id рисует определенный объект. Впрочем все.
Не уверен, что это “красиво” написано, но лично у меня вот так :
C++123456789101112//отрисовываем все наши спрайты, кроме тех, что должны не шевелитьсяwindow.draw(sprite);window.draw(sprite1);window.setView(window.getDefaultView()); // закрепляем вид// рисуем все что не шевелитсяhud.draw(window); // либо такwindow.draw(sprite1); // либо такwindow.setView(view); // открепляем камеру видаwindow.display(); // отображаемО господи, спасибо большое!
Если кому то понадобится, и этот код не будет работать:
Вместо переменной
C++1sf::String text;Создавайте что то типо такого:
C++12345Font font;font.loadFromFile("res/9615.ttf");Text text("", font, 50);text.setColor(Color::White);text.setStyle(Text::Bold);И вместо:
C++1text.SetText(str);Делаете так:
C++1text.setString(str);В прочем, все фактически так и было, но увы у меня не работало, мб из за того что я рукожоп с:
В любом случае спасибо за код :* -
АвторСообщения