Witam wszystkich!
Mam sprite'a, którego rozmiar został zmieniony(Resize) i którego muszę wycentrować dokładnie na jego połowę (szerokość / 2, wysokość / 2).
Problem polega na tym, że przed centrowaniem jest wszystko OK, a po centrowaniu nigdzie tego sprite'a nie widać (nawet mimo tego, że View przesuwa się w prawo) :(
Teoretycznie dostosowałem współrzędne do centrowania, bo biorę pod uwagę centrowanie:
tempBox.mSprite.SetImage(mPlatformImage);
tempBox.mSprite.Resize(tempHeight.mEndPoint - tempHeight.mStartPoint, 32);
tempBox.mSprite.SetCenter(tempBox.mSprite.GetSize().x / 2, tempBox.mSprite.GetSize().y / 2);
tempBox.mSprite.SetPosition(tempHeight.mStartPoint - tempBox.mSprite.GetCenter().x, tempHeight.mHeight - tempBox.mSprite.GetCenter().y);
mStartPoint = -16
mEndPoint = 1520
mHeight = 402
szerokość mSprite po resize = 1536
wysokość mSprite po resize = 32
Rozdzielczość okna: 640x480
Dodam jeszcze, że View, który mam ustawiony, też jest wycentrowany na środek ekranu.
View przesuwa się u mnie co cykl o +2 w osi X.
Czy mógłby mi ktoś pomóc z dobraniem poprawnych współrzędnych?
Proszę o pomoc
EDIT:
Odtworzyłem problem na prostym przykładzie:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow *window = new sf::RenderWindow(sf::VideoMode(640, 480), "Problemik");
sf::Image image;
sf::Sprite sprite;
if (!image.LoadFromFile("problem.png"))
return 1;
sprite.SetImage(image);
sprite.Resize(1536, 32);
sprite.SetCenter(sprite.GetSize().x / 2, sprite.GetSize().y / 2); // Tutaj jest problem
sprite.SetPosition(1500 - sprite.GetCenter().x, 300 - sprite.GetCenter().y);
while (window->IsOpened())
{
sf::Event Event;
while (window->GetEvent(Event))
{
if (Event.Type == sf::Event::Closed)
window->Close();
}
window->Clear();
window->Draw(sprite);
window->Display();
}
return 0;
}
Za problem.png można podstawić cokolwiek.