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

[Allegro] O kolizjach więcej

Ostatnio zmodyfikowano 2008-09-07 17:37
Autor Wiadomość
Patzick
Temat założony przez niniejszego użytkownika
[Allegro] O kolizjach więcej
» 2008-08-27 20:23:27
Chyba można odnieść wrażenie, że spamuję tematami, ale nie można zadawać dwóch pytań  w jednym temacie, więc oto mój poważny problem: Jak wykrywać i przeciwdziałać kolizjom z obiektami na mapie. Nie chodzi mi tu o kolizję 2 bitmap(ludzików)tylko o coś wydajniejszego, żeby postać nie mogła wchodzić na dane fragmenty mapy. Niby można dla każdego elementu napisać funkcję ale to by było strasznie czasochłonne a na pewno istnieje lepsze rozwiązanie. W sumie to obszerny temat, ale nie mam pojęcia jak się za to zabrać, żeby nie pisać dla każdego elementu osobno, bo tych elementów na mapie mogą być setki. Dzięki za wypowiedzi :)
P-1443
lynx
» 2008-08-27 23:13:14
Jeżeli chodzi o allegro to tutaj masz linka o kolizjach:
http://www.easykoder.yoyo.pl/index.php?mm=kol

A co do kolizji z obiektami (np. przeszkodami) to proponuję zastosować siatkę. A wogóle, kto powiedział, że programowanie nie jest czasochłonne?
P-1444
Patzick
Temat założony przez niniejszego użytkownika
» 2008-08-28 00:39:44
o tej kolizji to wiem, pisałem, że nie o nią chodzi :)
Nikt nie powiedział, że nie jest czasochłonne ale na pewno ktoś wymyślił jak zrobić kolizję dla wielu elementów naraz a nie każdego oddzielnie. Możesz podać przykład takiej siatki? Chodzi, żeby na niektóre kafelki mapy ludzik nie mógł po prostu wchodzić i to by było świetne rozwiązanie.
P-1445
DeBugger
Odpowiedź.
» 2008-08-28 10:51:55
Np. Bitmapy jeden z którymi się zderzasz(1, 2, 3):
C/C++
//[...]
int colob; //Collision object
BITMAP * 1;
BITMAP * 2;
BITMAP * 3;
BITMAP * 4;
BITMAP * 5;
//Tu ładujesz bitmapy
1 = colob;
2 = colob;
3 = colob;
//Piszesz też funkcję zderzania się ludzika z obiektami "colob".
//[...]
P-1446
Patzick
Temat założony przez niniejszego użytkownika
» 2008-08-28 15:37:59
no ok, ale skoro ludek stoi w miejscu i przesuwa się tylko mapa, to jak napisać kolizję dla (jak już trzeba) każdego osobnego elementu? Bo kafelki mapy na które można wchodzić i na które nie można ładowane są z 1 pliku .bmp więc nie trzeba niby ładować tylu map ale jak to napisać, żeby na te akurat nie mógł wchodzić a na te mógł?
P-1447
Patzick
Temat założony przez niniejszego użytkownika
» 2008-08-31 13:56:10
z racji tego, że minęło już trochę dni od ostatniego postu postaram się jeszcze raz rozwiązać ten zaiste trudny problem :P
więc wymodziłem coś takiego

if (blit(teren,bufor,60,0,300,210,30,30) && key[KEY_DOWN]) {/*przeciwdziałanie*/};

po próbie skompilowania okazało się to niemożliwe :P w sumie nic dziwnego, bo blit rysuje. Więc tu pytanie które powinno rozwiązać ten problem- jak brzmi polecenie podobne do getpixel() , które sprawdza czy dany kawałek bitmapy 30x30 znajduje się w punkcie 300/210? Mam nadzieję, że teraz jednak ktoś odpowie...:)
P-1449
lynx
» 2008-08-31 21:25:43
Ja bym Ci radził samemu wymyślić algorytm, bo nie wiadomo czy wogóle istnieje taka funkcja, wystarczy tylko pomyśleć głową. A w końcu nikt za Ciebie prograu nie napisze.
P-1450
DejaVu
» 2008-09-02 12:33:29
P-1462
« 1 » 2 3
  Strona 1 z 3 Następna strona