[SFML] Nie działa setPosition, nie widzę żadnego powodu.

0

Dzień dobry, pisze sobie własne rozszerzenie do SFML i natknąłem nie na problem który nie ma żadnej przyczyny. Nie dostaję żadnych błędów ani ostrzeżeń po porostu linijki odpowiedzialne za ustawianie sprite nie zostają wykonane. Gdy sprite dotyka górnej, prawej i lewej strony obiektu z którym ma kolidować to jako pozycja wyświetla się 200 - tylko w bottom'ie dobrze pokazuje pozycje. Jeżeli wyjmę to z funkcji i wrzucę do main wtedy normalnie działa. Za cholerę nie wiem co może być nie tak.

link: https://github.com/NintyS/sfCollision

3

Z tego co widzę, zarówno Collision::Distance() jak i Collision::Square() operują na kopii obiektów sf::Sprite.
Jeśli więc chcesz, by te metody modyfikowały wrzucane tam obiekty, to przekazuj ich wskaźnik, lub jako referencję.

void Collision::Square(sf::Sprite& spriteOne, sf::Sprite& spriteTwo, const float range)

To by też wyjaśniało, dlaczego:

Jeżeli wyjmę to z funkcji i wrzucę do main wtedy normalnie działa.


Dodatkowo, na przyszłość:

  • Postaraj się lepiej nazywać meody - gdybym chciał teraz wykorzystać Twój kod, to nie mam pojęcia co ten kod robi.
    Metoda o nazwie Square() nagle zmienia mi pozycję Sprite'a? Trudniej jest też Ci pomóc, bo trudniej jest zrozumieć Twój kod.
  • Wykorzystanie tego, co tworzysz (a w README piszesz, że tworzysz to by komuś mogło się przydać) może być niewygodne, bo:
    trzeba będzie pobrać od Ciebie zarówno kolejną bibliotekę i ją linkować, jak i pobrać plik nagłówkowy
    wykorzystujesz #include <SFML/Graphics.hpp>, gdzie includowana ścieżka niekoniecznie musi pokrywać się z czyjąś konfiguracją projektu.
0

@Bartosz36: Na razie robiłem to z myślą o MacOS. Problem rozwiązała referencja. Wydaje mi się że kod Collision.Square(); wiele używającemu tłumaczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1