Witam, mam taki fragment kodu mojej przyszłej gry:
Program::signals Program::game() {
Player player(50, sf::Vector2f(m_window.getSize().x - (m_window.getSize().x / 2),
m_window.getSize().y - (m_window.getSize().y / 10)),
sf::Color::Green, sf::Color::White);
while (true) {
sf::Event event;
while (m_window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
return signals::EXIT;
}
if (event.type == sf::Event::Resized) {
player.setPosition(sf::Vector2f(event.size.width - (event.size.width / 2),
event.size.height - (event.size.height / 10)));
}
}
m_window.clear(sf::Color::Black);
m_window.draw(player);
m_window.display();
}
return signals::NONE;
}
Myślę że całość nie ma większego znaczenia, np. signals to zastosowany typ wyliczeniowy w mojej strukturze gry.
Kwestia dotyczy tego fragmentu:
if (event.type == sf::Event::Resized) {
player.setPosition(sf::Vector2f(event.size.width - (event.size.width / 2),
event.size.height - (event.size.height / 10)));
}
Gracz ma swoje położenie, środek ekranu w szerokości i na wysokości ok. 1/10 ekranu od dołu. Tak to wygląda na starcie:
Taki też jest konstruktor obiektu:
Player player(50, sf::Vector2f(m_window.getSize().x - (m_window.getSize().x / 2), m_window.getSize().y - (m_window.getSize().y / 10)), sf::Color::Green, sf::Color::White);
Hipotetycznie dostosowuje też położenie gracza w przypadku zmiany rozmiaru okna ( jak już pokazałem ). Jednak mimo wszystko obiekt nadal jest wtedy skalowany:
Jak widać jest podwójnie źle bo nie tylko się skaluje ale jeszcze ma dziwne położenie.
Będę bardzo wdzięczny za wyjaśnienie mi co zawaliłem ;)