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

[Allegro] Mapa dwuwymiarowa {kolizja}

Ostatnio zmodyfikowano 2009-08-21 18:01
Autor Wiadomość
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.
P-9414
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.
P-9415
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
P-9418
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.?

C/C++
if( kolizja( ludek_x, ludek_y, 64, 88, 600, 200, 100, 100 ) )
     textout_ex( screen, font, "kolizja  !", 20, 20, makecol( 255, 0, 255 ), - 1 );
P-9429
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
P-9432
szyx_yankez
Temat założony przez niniejszego użytkownika
» 2009-08-14 12:46:07
@kampar napisał
C/C++
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.]
C/C++
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 );
};
P-9440
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:
C/C++
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)
P-9441
DejaVu
» 2009-08-21 18:01:45
Autor widzę nie zainteresowany tematem, więc go zamykam.
P-9689
« 1 »
  Strona 1 z 1