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

Kolizja i układanie mapki

Ostatnio zmodyfikowano 2011-04-23 13:14
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Kolizja i układanie mapki
» 2011-04-22 15:49:34
Otóż zrobiłem sobie taką kolizję:
Nad main to:
C/C++
bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 )
{
    if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else
    if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else
    if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else
    if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true;
    else return false;
   
};

a w pętli głównej to:
C/C++
C/C++
if( kolizja( player_x, player_y, player0->w, player0->w,
grass_x, 448, grass->w, grass->h ) == true )
{
    player_y -= 1;
}

Więc tak pierwsze bym prosił was o ocene tej kolizij czy jest dobra czy jednak macie jakieś zastrzeżenia. I mam drugi problem. Będe układał mapke z kafelków. Czy każdy kawałek mapki mam układać osobno czy jakoś inaczej?
P-31637
SeaMonster131
» 2011-04-22 20:07:58
Jeżeli masz mape kafelkową to zastosuj kolizje między kafelkami, łatwiej :)
P-31669
bingo009
Temat założony przez niniejszego użytkownika
» 2011-04-23 11:23:26
No fakt między kafelkami lepiej tylko gorzej z układaniem mapki. Jak ustawie kilkadziesiąt kafelków to może się troche zamulić. Myślałem nad wykorzystaniem tablicy.
P-31705
SeaMonster131
» 2011-04-23 13:14:33
Jak ustawie kilkadziesiąt kafelków to może się troche zamulić. Myślałem nad wykorzystaniem tablicy.

C/C++
int mapa[ 100 ][ 100 ];

for( int y = 0; y < 100; y++ )
{
    for( int x = 0; x < 100; x++ )
    {
       
        if( player_x >=(( x * 50 ) - 1000 ) &&
        player_x <=(( x * 50 ) + 1000 ) &&
        player_y >=(( y * 50 ) - 1000 ) &&
        player_y <=(( y * 50 ) + 1000 ) )
        {
            if( mapa[ y ][ x ] == 1 ) rysuj_droge( x * 50, y * 50 );
           
            if( mapa[ y ][ x ] == 2 ) rysuj_cos_tam_innego();
           
        }
       
    }
}

Masz tablicę liczb, jeżeli np 1 w tablicy to narysuje Ci bitmapę o współrzędnych x*50 i y*50. Ale narysuje tylko te kafelki które bede oddalone od gracza max 1000 :)
P-31715
« 1 »
  Strona 1 z 1