Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Problem z ustaleniem Origin w związku z animacją .

Ostatnio zmodyfikowano 2013-09-28 18:36
Autor Wiadomość
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 :

C/C++
int menu()
{ // pozycja obiektow
    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 ) // ZWIEKSZANIE
        {
            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 );
    }
   
}
P-92800
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.
P-92807
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
P-92816
pekfos
» 2013-09-28 18:25:35
P-92818
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ć :/
P-92819
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)
P-92820
« 1 »
  Strona 1 z 1