szyx_yankez Temat założony przez niniejszego użytkownika |
[Allegro] Mapa dwuwymiarowa {kolizja} » 2009-08-13 18:15:46 1.Mam mapę dwuwymiarową .
Jak napisać kod by ludek i dany kafel np.2 kolidował ze sobą.
0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,2,2,2,2,2,2,2,2,
i chodzi oto jeszcze zeby wszystkie te kafle kolidowały z ludkiem. Kafle 100 x100.
2.Co zrobić by scrolowanie mapy zachodziło wolniej dodam że jak zrobie to poprzez timer to klatkuje jak to zrobi by nie klatkowało tylko przewijało płynnie i powoli.
xd. |
|
DeBugger |
» 2009-08-13 18:20:35 Musisz dla każdego kafla obliczyć jego pozycję a także jego rozmiary - jeżęli np. kafel będzie miał szerokość 20 i wysokość dwadzieścia, to jego pozycja będzie wyglądała tak: x=wspolrzedna_x*20; y=wspolrzedna_y*20; Np. dla kafla na pozycji 5, 2 wartości te wynosić będą: x=5*20; y=2*20; Teraz musisz poobliczać pozycję ludka i kafli i sprawdzać zajście kolizji. |
|
kampar |
» 2009-08-13 19:34:47 ja mam dwie tekstury "0" i "1" moj ludek moze chodzic tylko po teksturze "0", wiec sprawdzam czy tekstura na ktora chce wejsc ma wartosc "0" Np. Jestem na map[1][1] chce isc w prawo, wiec jesli map [1][2] == 0 to ide dalej, a jesli map[1][2] == 1 to zatrzymuje sie. Niestety trzeba wiedziec gdzie znajduje sie nasza postac
EDIT:Można miec wiele tekstur i wtedy trzeba uwzglednic po ktorych nasza postac moze chodzic, a po ktorych nie |
|
szyx_yankez Temat założony przez niniejszego użytkownika |
» 2009-08-14 06:57:24 1.Jak to masz dwie textury ? To znaczy że masz dwie mapy dwuwymiarowe możesz jaśniej? 2.Zastosowałem taką kolizje chce by ludek kolidował z bitmapą [6][2] Kafle są wielkości 100 x 100. Jednak ta kolizja nie działa jakie są błędy.? if( kolizja( ludek_x, ludek_y, 64, 88, 600, 200, 100, 100 ) ) textout_ex( screen, font, "kolizja !", 20, 20, makecol( 255, 0, 255 ), - 1 ); |
|
eBbi |
» 2009-08-14 08:55:11 1. Chodzi mu że tylko dwie tekstury do wyboru na kafla. 0 - np. trawa a 1- woda. 2. Pokaż całą funckję KOLIZJA |
|
szyx_yankez Temat założony przez niniejszego użytkownika |
» 2009-08-14 12:46:07 @kampar napisał EDIT: Mo ż na miec wiele tekstur i wtedy trzeba uwzglednic po ktorych nasza postac moze chodzic, a po ktorych nie
Moje pytanie jest takie jak to uwzględnić że np może chodzić tylko po ziemi a gdy wejdzie na przeszkode zatrzymuje się? Podajcie kod jak możecie To moja funkcja kolizij.] bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 ) { if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true ); return( false ); }; |
|
kampar |
» 2009-08-14 13:11:16 Zalozmy ze masz 3 tekstury. Trawa to '0' , a '1' i '2' to przeszkody. U mnie wyglada to tak: int x = 1, y = 1;
while( !key[ KEY_ESC ] ) { if(( key[ KEY_RIGHT ] ) &&( map[ y ][ x + 1 ] == 0 ) ) { postac_x += 40; x++; rest( 200 ); } if(( key[ KEY_LEFT ] ) &&( map[ y ][ x - 1 ] == 0 ) ) { postac_x -= 40; x--; rest( 200 ); } if(( key[ KEY_DOWN ] ) &&( map[ y + 1 ][ x ] == 0 ) ) { postac_y += 40; y++; rest( 200 ); } if(( key[ KEY_UP ] ) &&( map[ y - 1 ][ x ] == 0 ) ) { postac_y -= 40; y--; rest( 200 ); }
Moja postac znajduje sie poczatkowo na map[1][1], oraz porusza sie o szerokosc kafla(bede probowal cos z tym zrobic aby poruszal sie bardziej plynnie) |
|
DejaVu |
» 2009-08-21 18:01:45 Autor widzę nie zainteresowany tematem, więc go zamykam. |
|
« 1 » |