Kolizja i układanie mapki
Ostatnio zmodyfikowano 2011-04-23 13:14
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: 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++ 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? |
|
SeaMonster131 |
» 2011-04-22 20:07:58 Jeżeli masz mape kafelkową to zastosuj kolizje między kafelkami, łatwiej :) |
|
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. |
|
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. |
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 :) |
|
« 1 » |