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

[Allegro] animacja chodzenia?

Ostatnio zmodyfikowano 2010-02-08 19:07
Autor Wiadomość
Sticky
Temat założony przez niniejszego użytkownika
[Allegro] animacja chodzenia?
» 2010-02-08 07:42:40
Witam, dosyć niedawno zacząłem programować w allegro, przeczytałem wszystkie lekcje kursu i wszystko szło ok.
Potrzebuję jednak animacji chodzenia w 4 strony (góra,dół,lewo,prawo), w kursie jest tylko coś takiego, że ludzik ciągle zmienia animacje, nie zależnie od wciśniętego przycisku. Próbowałem zrobić to na takiej zasadzie jak w kursie, tylko z 4 kierunkami ale mi się nie udało.
Chcę, żeby po wciśnięciu danej strzałki wyświetlał się pierwszy krok, po nim drugi i później postać bez ruchu, skierowana wciąż w tym samym kierunku.
Może znacie jakieś prostrze sposoby niż ten opisany w kursie? Jak spróbowałem go zrobić na 4 kierunki nie byłem nawet blisko tego, do czego chcę dojść. Według mnie animacja chodzenia jest jednym z najważniejszych elementów w grafice gry 2d, dziwnie to wygląda gdy postać przemieszcza się po mapie ciągle skierowana w tym samym kierunku, na dodatek nieruchoma.
Z góry bardzo dziękuję za pomoc.
P-13645
pekfos
» 2010-02-08 14:09:55
C/C++
enum cDir {
    DIR_UP = 0,
    DIR_DOWN = 1,
    DIR_LEFT = 2,
    DIR_RIGHT = 3 };
short tmp = 0;
cDir dir = DIR_UP;

if( tmp == 0 ) {
    //chodzenie
    if( key[ KEY_UP ] ) {
        tmp = 1;
        dir = DIR_UP;
    }
    //..
} else if( tmp < MAX_KLATEK ) tmp++;
else if( tmp >= MAX_KLATEK ) tmp = 0;

//wyświetlanie..
masked_blit( ludek, bufor, tmp * ROZMIAR_LUDKA_X, dir * ROZMIAR_LUDKA_Y, 100, 100,
ROZMIAR_LUDKA_X, ROZMIAR_LUDKA_Y );
P-13646
DejaVu
» 2010-02-08 15:36:32
1) jeśli obiekt się porusza:
klatka =( klatka + 1 ) % ilosc_klatek;
2) rysowanie:
C/C++
switch( obecny_kierunek )
{
case E_BRAK:
    blit(...); //rysuj zioma stojącego na wprost ekranu
    break;
   
case E_LEWO:
    blit( ludek_lewy[ klatka ],...);
    break;
case E_PRAWO:
    blit( ludek_prawy[ klatka ],...);
    break;
}
W powyższym kodzie zakłada się, że ludek_lewy i ludek_prawy są tablicami, które zawiarają klatki ludzika poruszającego się w lewo/w prawo. Dodatkowo ilość klatek dla ruchu w lewo jest taka sama jak dla ruchu w prawo.
P-13647
Sticky
Temat założony przez niniejszego użytkownika
» 2010-02-08 16:56:34
Dzięki wielkie, odrazu biorę się do sprawdzania :)
P-13649
Sticky
Temat założony przez niniejszego użytkownika
» 2010-02-08 17:07:15
ok już to ogarnąłem :) zaraz (jeśli mi się uda) skończę projekt z tą animacją to dam edita i napiszę czy mi działa :d

/edit

Wszystko działa tak jak tego chciałem, wielkie dzięki jeszcze raz!
niedługo może wrzucę swój projekt do 'nasze prace' :)
P-13652
DejaVu
» 2010-02-08 17:17:29
Weź przykład z kursu, skompiluj i uruchom. Jeśli działa to znaczy, że Ty coś źle robisz. Swoją drogą jeden temat = jeden problem.
P-13656
Sticky
Temat założony przez niniejszego użytkownika
» 2010-02-08 18:18:00
Jeszcze jedno, co do tej animacji.
Wszystko jest ok, tylko ludzik miga gdy się rusza.
Wiecie jak temu zaradzić? :|
P-13661
pekfos
» 2010-02-08 18:27:44
umiejętności jasnowidzenia jeszcze nie posiadłem..
pokaż co napisałeś.
P-13662
« 1 » 2 3
  Strona 1 z 3 Następna strona