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

[SFML 2.0] Drganie obiektów gry podczas przemieszczania

Ostatnio zmodyfikowano 2013-07-15 18:37
Autor Wiadomość
Wicon
Temat założony przez niniejszego użytkownika
» 2013-07-11 11:24:52
Dobra, jednak jestem ciemokiem. Nie miałem tych bibliotek skopiowanych do folderu release. Po wrzuceniu ich tam ładnie pięknie się kompiluje.
Nie mniej jednak, kompilacja programu w trybie release nie pomogła w rozwiązaniu mojego problemu.

EDIT: Oczywiście w międzyczasie próbuję radzić sobie sam, ale nie mam żadnych mądrych pomysłów. Chciałem tylko dodać, że próbowałem również przesuwać pasek życia metodą "move" zamiast "setPosition", co również nie pomogło.
P-87508
pekfos
» 2013-07-11 12:45:10
Podaj kod odpowiedzialny za ustawianie zmiennych x i y.
P-87520
Wicon
Temat założony przez niniejszego użytkownika
» 2013-07-11 12:54:08
C/C++
if( zdarzenie.type == Event::KeyPressed && zdarzenie.key.code == Keyboard::A )
{
    Player.setTexture( playerleft );
    if( Kolizja_Left == false )
    {
        HPRateOUT.move( - 4, 0 );
        HPRateIN.move( - 4, 0 );
        x -= 4;
    };
};
if( zdarzenie.type == Event::KeyPressed && zdarzenie.key.code == Keyboard::D )
{
    Player.setTexture( playerright );
    if( Kolizja_Right == false )
    {
        HPRateOUT.move( + 4, 0 );
        HPRateIN.move( + 4, 0 );
        x += 4;
    };
};
if( zdarzenie.type == Event::KeyPressed && zdarzenie.key.code == Keyboard::W )
{
    Player.setTexture( playerup );
    if( Kolizja_Up == false )
    {
        HPRateOUT.move( 0, - 4 );
        HPRateIN.move( 0, - 4 );
        y -= 4;
    };
};
if( zdarzenie.type == Event::KeyPressed && zdarzenie.key.code == Keyboard::S )
{
    Player.setTexture( playerdown );
    if( Kolizja_Down == false )
    {
        HPRateOUT.move( 0, + 4 );
        HPRateIN.move( 0, + 4 );
        y += 4;
    };
};

Tak samo jest zrobione poruszanie się za pomocą strzałek. No i dla paska życia jest tutaj zastosowana wcześniej wspomniana metoda move zamiast setposition. Dla ścisłości, gdy stosowałem setposition to zmianę pozycji ustawiałem nad pętlą ze zdarzeniami.
P-87523
pekfos
» 2013-07-11 13:03:02
Spróbuj modyfikować tylko x/y, a pozycję sprajta ustawiać raz, przed wyświetleniem.
P-87525
Wicon
Temat założony przez niniejszego użytkownika
» 2013-07-11 13:11:52
Pozycja sprajta jest modyfikowana tylko raz. Muszę wiedzieć, w którą stronę go przesunąć, są 4 kierunki dlatego musiałem napisać zmianę pozycji 4 razy, ale pozycja jest modyfikowana 1 raz, bo przy każdym obiegu pętli gra może obsłużyć tylko 1 zdarzenie. Gdybym chciał zmianę pozycji w kodzie mieć napisaną tylko 1 raz dla wszystkich kierunków, to musiałbym użyć metody setposition, a pisałem już, że robiłem tak i pasek nadal drga.
P-87526
pekfos
» 2013-07-11 13:18:48
Pokaż całą pętlę główną i opisz dokładnie te drgania.
P-87527
DejaVu
» 2013-07-11 14:13:10
Zapewne wystarczy zrobić prostą pętlę, aby zaobserwować efekt drgania:
C/C++
sprajt.move( 1, 0 );
okno.draw( sprajt );
Proponuję więc skompilować w trybie release oraz włączyć synchronizację pionową. Wiem, że kiedyś też miałem te objawy i nawet założyłem tutaj temat ale... chyba skutecznego rozwiązania na to nie znalazłem...

Frazy, które należy wpisać w wyszukiwarkę google:
http://cpp0x.pl/forum/temat/​?id=8000&p=3
P-87534
Wicon
Temat założony przez niniejszego użytkownika
» 2013-07-11 14:34:18
Pekfos, cała pętla główna ma ponad 2000 linijek.

DejaVu, jeśli któreś z tych tematów mi pomogą to oczywiście podam linki żeby inni mieli. A jeśli nie i rozwiążę ten problem sam, to powiem co zrobiłem. A musi mi się udać, nie ma rzeczy niemożliwych i będę robił aż zacznie hulać.

Dzięki za całą dotychczasową pomoc.
P-87537
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona