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

[Allegro] Kolizje per pixel

Ostatnio zmodyfikowano 2011-12-17 22:16
Autor Wiadomość
radmack
Temat założony przez niniejszego użytkownika
» 2011-12-17 12:38:28
Ponawiam prośbę o pomoc w ustaleniu problemu przy kolizjach.
P-45732
m4tx
» 2011-12-17 15:59:59
Nie bumpuj tematu! Od twojego ostatniego posta minęło trochę ponad godzinę, nikt 24/7 nie siedzi na forum i nie pomaga od razu -.-
P-45753
pekfos
» 2011-12-17 16:26:35
pętla{
sprawdzasz kolizje
renderujesz mapę kolizji
czyścisz mapę kolizji
}
P-45759
radmack
Temat założony przez niniejszego użytkownika
» 2011-12-17 17:02:12
m4tx spójrz na daty najpierw i potem próbuj po mnie jechać, jeśli będzie to słuszne. Przedostatni post został przeze mnie napisany prawie 5 dni temu.

if(getpixel(bufor, ludek_x, ludek_y)==makecol(255,255,255))

Tym sposobem sprawdzam kolizje, a jednak nie działają. Znam teorię, wydaje mi się, że to, co napisałem, powinno dobrze działać, a jednak męczę się z tym już tydzień. Wyodrębniłem kolizje do osobnego, eksperymentalnego pliku i tam też nie działają. Załączam ten plik, tym razem bardzo mało kodu. Bardzo proszę o dokładne przeanalizowanie kodu i powiedzenie mi, co jest nie tak, skoro nawet tak prosty przykład nie działa.

http://www.fileserve.com/file/SAg5qHf/proba.rar








P-45769
akwes
» 2011-12-17 17:07:11
if(getpixel(bufor, ludek_x, ludek_y)==makecol(255,255,255))

sprawdzasz czy dany piksel jest biały. Jeżeli to z czym ma kolidować jest białe, to ok. A Jeśli nie jest no to zrobiłeś to źle.

//fixed
P-45771
pekfos
» 2011-12-17 17:31:17
if(getpixel(bufor, ludek_x, ludek_y)==makecol(255,255,255))

sprawdzasz czy dany piksel jest czarny
raczej biały ;]
P-45774
akwes
» 2011-12-17 17:36:11
no ;p wiedziałem że jedno z dwóch a nie chciało mi się sprawdzać :P

poprawione :P
P-45777
pekfos
» 2011-12-17 17:59:14
Autorze tematu!
wywal lokalne ludek_x i ludek_y z main(). Przesłaniają one te współrzędne które są używane w kolizjach..
W rezultacie: chodzisz bez kolizji bo są sprawdzane wciąż w tym samym miejscu (na środku ekranu).

//edit:
C/C++
#include <allegro.h>

//..

int ludek_x =( SCREEN_W / 2 ) - 12; //1
int ludek_y =( SCREEN_H / 2 ) - 32;

//..
// kolizje (uzywajace wsp. 1)
//..

int main()
{
    //.. 
   
    int ludek_x =( SCREEN_W / 2 ) -( ludek->w / 2 ); //2
    int ludek_y =( SCREEN_H / 2 ) -( ludek->h / 2 );
   
    //..
    // chodzenie (uzywajace wsp. 2)
    //..
} END_OF_MAIN();
P-45783
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona