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

[allegro.h] Problemy ze skakaniem

Ostatnio zmodyfikowano 2008-05-04 20:45
Autor Wiadomość
Kinsl4yer
Temat założony przez niniejszego użytkownika
[allegro.h] Problemy ze skakaniem
» 2008-05-04 18:03:48
hi,

Mam pewnien problem przy napisaniu kodu skoku, mianowicie chodzi mi o uzykanie takiego efektu:

Skakanie, przeszkoda, grawitacja
Skakanie, przeszkoda, grawitacja

Napisalem cos takiego:
C/C++
(...)
if( key[ KEY_UP ] )
{
    y = y - 20;
    x = x + 5;
    y = y + 20;
}
(...)
masked_blit( ludek, bufor, 0, 0, x, y - ludek->h, ludek->w, ludek->h );

Probowalem po warunku dac petle for nic nie dalo, ciagle postac porusza sie tylko w prawo o +5.

W sumie nic dziwnego, od y cos odejmuje a potem dodaje czyli funkcja masked_blid otrzymuje juz gotowa wartosc x i y

Mogłby mi ktos opisac jak nalezaloby to zrobic?

Pozdrawiam,
Kinsl4yer ;]
P-625
Ju1ian
» 2008-05-04 19:23:28
Też miałem z tym problem ;) Mogę ci dać gotowca z grawitacją lub bez ;)
Jeżeli bez to proszę:
C/C++
bool skok = false;
bool down = false;
if( key[ KEY_UP ] )
     skok = true;

if( skok == true && down == false ) {
    y -= 10;
    //czy tam jak ty chcesz 20 ;)
    down = true;
}
if( skok == true && down == true ) {
    y += 10;
    //czy tam jak ty chcesz 20 ;)
    skok = false;
    down = false;
}
P-627
zax090
» 2008-05-04 19:39:07
a z grawitacją ?
P-631
Ju1ian
» 2008-05-04 19:43:29
To dam ze swojej gry ;P
C/C++
if(( key[ KEY_UP ] ) &&( ludek_ruch_y == 0 ) &&( ludek.y == klocki_y - 53 || ludek.y == platfa_y - 52 ) ) {
    ludek_ruch_y =- 8;
}
ludek.y += ludek_ruch_y;
if(( ludek.y + ludek_ruch_y >= klocki_y - 53 ) &&( ludek.y <= klocki_y - 53 ) )
{
    ludek_ruch_y = 0;
    ludek.y = klocki_y - 53;
} else
{
    ludek_ruch_y += 0.2;
}
Przeróbcie go sobie na własne potrzeby ;)
P-633
Kinsl4yer
Temat założony przez niniejszego użytkownika
» 2008-05-04 19:44:28
Dzieki za odpowiedz,
ale cos nie dziala, efekt jest dokladnie taki sam jak poprzednio.
Wklepujac Twoj kod po nacisnieciu UP nic sie nie dzialo, dodalem
x += 5; zeby zobaczyc czy sie poruszy w prawo, no i sie porusza...

C/C++
(..)
if( skok == true && down == false ) {
    y = y - 20;
    x = x + 5; <----
    down = true;
}

Nie wiem co moze byc nie tak...
Moze pokaze caly kod?

Pozdrawiam,
Kinsl4yer ;]
P-634
Ju1ian
» 2008-05-04 19:46:55
To weź z grawitacją, bo u mnie działa. Ale go przerób ;)
P-635
DejaVu
» 2008-05-04 19:48:29
W poniższym temacie pomagałem naprawić kod w prostej platformówce, żeby uzyskać efekt podobny do grawitacji, bez używania wzorów grawitacji. Poszukaj tam posta odpowiedniego - jest tam cały przykład działający -> pliki graficzne musisz sobie jakieś samemu dodać. Oto temat: http://ddt.pl/forum/?Tid=126.
P-636
Ju1ian
» 2008-05-04 19:54:10
Właśnie mu podałem ten system ;)
P-637
« 1 » 2 3
  Strona 1 z 3 Następna strona