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

[Allegro] Szybkość poruszania mapą

Ostatnio zmodyfikowano 2011-12-31 19:08
Autor Wiadomość
ison
» 2011-12-30 22:18:00
ehh, pisane z głowy, mogą być błędy ale raczej powinno być ok ;)
C/C++
void draw_map()
{
    int tile_x = mario_x / TILE_SIZE;
    int tile_y = mario_y / TILE_SIZE;
    for( int i = tile_x - SCREEN_W / TILE_SIZE / 2 - 1; i <= tile_x + SCREEN_W / TILE_SIZE / 2 + 1; ++i ) {
        for( int j = tile_y - SCREEN_H / TILE_SIZE / 2 - 1; j <= tile_y + SCREEN_H / TILE_SIZE / 2 + 1; ++j ) {
            if( i >= 0 && j >= 0 && i < MAP_W && j < MAP_H ) blit( teren, bufor,( map[ j ][ i ] % 4 ) * 50,( map[ j ][ i ] / 4 ) * 50 ), i * TILE_SIZE - ViewX, j * TILE_SIZE - ViewY );
           
        }
    }
}
TILE_SIZE to rozmiar kafla,
MAP_W i MAP_H to rozmiar mapy kafelkowej
ViewX i ViewY to pozycja kamery
50 wziąłem z Twojego poprzedniego kodu - rozmiar kafla w Twoim sprite sheet'cie, możesz to zastąpić TILE_SIZE

ogólnie jak będziesz chciał coś wyświetlić to wyświetlaj to na pozycji {pozycja_x_obiektu-ViewX,pozycja_y_obiektu-ViewY}

//edit
aa, zapomniałem 2 ostatnich argumentów w blit, TILE_SIZE,TILE_SIZE ;)
P-46748
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-30 23:49:00
A jak będę wyświetlać mapę za pomocą Twojego kody to w mojej gdzie muszę coś zmieniać? Np. system kolizji?
P-46757
ison
» 2011-12-31 00:42:44
nie
P-46760
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-31 11:03:40
Dobra, zrobiłem tak:
C/C++
void wys_mape()
{
    int tile_x = mario_x / 50;
    int tile_y = mario_y / 50;
    for( int i = tile_x - SCREEN_W / 50 / 2 - 1; i <= tile_x + SCREEN_W / 50 / 2 + 1; ++i )
    {
        for( int j = tile_y - SCREEN_H / 50 / 2 - 1; j <= tile_y + SCREEN_H / 50 / 2 + 1; ++j )
        {
            if( i >= 0 && j >= 0 && i < 10 && j < 10 ) blit( teren, bufor,( map[ j ][ i ] % 4 ) * 50,( map[ j ][ i ] / 4 ) * 50 ), i * 50 - ViewX, j * 50 - ViewY, 50, 50 );
           
        }
    }
}
I niestety są błędy już z linijce:
int tile_x = mario_x / 50;
P-46766
pekfos
» 2011-12-31 11:08:22
A jakie? -.-
Mógłbyś czasem sam domyślić się że "nie działa" to za mało..
P-46767
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-31 11:20:21
domyśliłem się, że jak nie działa to samo się nie naprawi. Dlatego myślałem nad tym trochę ale nic nie wymyśliłem, dlatego napisałem do Was.
P-46769
SeaMonster131
» 2011-12-31 11:25:00
domyśliłem się, że jak nie działa to samo się nie naprawi.
To tego aż trzeba sie domyślać? o.O


I po 2., przeczytaj ze zrozumieniem co napisał @pekfos.
P-46770
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-31 11:29:10
pekfos pisał, że się nie domyśliłem, że jak nie działa to za mało.
A pierwszej części Jego wypowiedzi nie rozumiem, nie wiem skąd to pytanie "a jakie" i czego mogło się dotyczyć.
P-46771
1 2 3 4 5 6 7 « 8 » 9 10 11 12
Poprzednia strona Strona 8 z 12 Następna strona