domin568 Temat założony przez niniejszego użytkownika |
[SFML 2.0] Problem z ustaleniem Origin w związku z animacją . » 2013-09-28 15:43:35 Witam . Stworzyłem 4 przyciski do gry ( Gra jednoosobowa , dwuosobowa , ustawienia i wyjście ) , są one skalowane do 0,45 , bo jak najedziemy na nie myszką to płynnie zmienią skalowanie na 0,53 (0,08 różnicy ) i żeby nie było widać pikseli . Czytałem w kursie SFML na tym forum że Origin jest w lewym górnym rogu obiektu . Jednak jeżeli wezme getOrigin () na każdym (nawet na tym najbardziej po prawej ) przycisku to widze że jest równe x : 0 , y : 0 . Jeżeli najeżdżam myszką na te przyciski to zwiększają się one a jak odjade to wracają do stanu pierwotnego . Jednak animacja ta mnie niezadowala , bo przycisk zwiększa się tylko w dwie strony ( widoczne na rysunku pomocniczym ) . Zaznaczyłem też tam jakbym chciał zeby to wyglądało na przycisku gry dwuosobowej . Moim pomysłem na zrobienie tego było ustalenie Origin , na ich pozycje , jednak wtedy wygląda to jak na tym obrazku : http://ifotos.pl/zobacz/Untitled1_nsnnqpa.jpg/ . Nie wiem z czego to wynika ( domyślam się że skalowanie tych obiektów wcześniej w jakiś sposób zmieniło to wszystko ) . Rysunek pomocniczy : http://ifotos.pl/zobacz/Untitledj_nsnnqhx.jpg/ . Kluczowe fragmenty kodu : int menu() { Przycisk PrzyciskJedno( sf::Vector2f( 25, 200 ), 1, 1 ); Przycisk PrzyciskDwu( sf::Vector2f( 275, 200 ), 2, 2 ); Przycisk PrzyciskOpcje( sf::Vector2f( 525, 200 ), 2, 3 ); Przycisk PrzyciskWyjscie( sf::Vector2f( 775, 200 ), 2, 4 ); }
Przycisk::Przycisk( sf::Vector2f pozycja, float stan, float jaki_obrazek ) { obrazek_przycisku.setScale( 0.45, 0.45 ); }
void Przycisk::animacjaNajechania( float dlugosc_animacji, float jaka_akcja, float skala_maksymalna_przycisku, float skala_minimalna_przycisku ) { obrazek_przycisku.setOrigin( obrazek_przycisku.getPosition() ); cout << endl; if( stanPrzycisku == AKTYWNY ) { float ilosc_klatek_animacji = dlugosc_animacji * LICZBA_KLATEK; if( jaka_akcja == 1 ) { rozmiar_obrazka.x = rozmiar_obrazka.x + 0.08 / ilosc_klatek_animacji; rozmiar_obrazka.y = rozmiar_obrazka.y + 0.08 / ilosc_klatek_animacji; } if( jaka_akcja == 2 ) { rozmiar_obrazka.x = rozmiar_obrazka.x - 0.08 / ilosc_klatek_animacji; rozmiar_obrazka.y = rozmiar_obrazka.y - 0.08 / ilosc_klatek_animacji; } if( rozmiar_obrazka.x > skala_maksymalna_przycisku ) rozmiar_obrazka.x = skala_maksymalna_przycisku; if( rozmiar_obrazka.y > skala_maksymalna_przycisku ) rozmiar_obrazka.y = skala_maksymalna_przycisku; if( rozmiar_obrazka.x < skala_minimalna_przycisku ) rozmiar_obrazka.x = skala_minimalna_przycisku; if( rozmiar_obrazka.y < skala_minimalna_przycisku ) rozmiar_obrazka.y = skala_minimalna_przycisku; obrazek_przycisku.setScale( rozmiar_obrazka ); } }
|
|
pekfos |
» 2013-09-28 16:13:42 Jednak jeżeli wezme getOrigin () na każdym (nawet na tym najbardziej po prawej ) przycisku to widze że jest równe x : 0 , y : 0 |
Origin to nie jest pozycja sprajta. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-09-28 18:17:03 No tak , tylko chciałem sprawdzić gdzie jest ten punkt . Wiem że to nie pozycja sprite |
|
pekfos |
» 2013-09-28 18:25:35 |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-09-28 18:33:00 Czyli że " The coordinates of this point must be relative to the top-left corner of the object " oznacza że wszystkie transformacje są względne do lewego górnego rogu ?? Naprawdę nie mogę tego zrozumieć :/ |
|
pekfos |
» 2013-09-28 18:36:11 The origin of an object defines the center point for all transformations. [..] The default origin of a transformable object is (0, 0) |
|
|
« 1 » |