[Allegro, C++] Kolizja postaci z botem
Ostatnio zmodyfikowano 2010-05-31 13:18
lemis.aryl Temat założony przez niniejszego użytkownika |
[Allegro, C++] Kolizja postaci z botem » 2010-05-30 18:57:36 Mam taką funkcję dla kolizji: bool kolizja( int x1, int y1, int x2, int y2 ) { if( x2 < x1 + 60 && x2 + 60 > x1 && y2 < y1 + 60 && y2 + 60 > y1 ) { return true; } else { return false; } } i dwie postacie. Jedną steruję ja, a druga chodzi sobie z punktu A do punktu B. Chciałbym zrobić tak, żeby moja postać nie mogła wejść na tą drugą więc wywołałem funkcję: if( kolizja( ludek_x, ludek_y, dre.x, dre.y ) == true ) { if( key[ KEY_LEFT ] ) { ludek.x++; } if( key[ KEY_RIGHT ] ) { ludek.x--; } if( key[ KEY_UP ] ) { ludek.y++; } if( key[ KEY_DOWN ] ) { ludek.y--; } } Tylko, że to działa trochę inaczej niż chciałem. Gdy wejdę swoją postacią w drogę tej drugiej postaci, to ta druga postać nie potrafi przeze mnie przejść(i dobrze). Ale gdy ja próbuję przejść przez tą drugą postać to tylko moja postać trochę zwalnia i chodzi sobie po drugiej normalnie. Dlaczego tak się dzieje? |
|
DejaVu |
» 2010-05-31 01:20:16 W największym skrócie: bo tak oprogramowałeś :) |
|
lemis.aryl Temat założony przez niniejszego użytkownika |
» 2010-05-31 08:32:33 No tak. Ale dlaczego moja postać tylko zwalnia, a się nie zatrzymuje? |
|
szyx_yankez |
» 2010-05-31 12:21:47 Może masz coś nie tak z timerami np. jeden wolniejszy a drugi szybszy. |
|
lemis.aryl Temat założony przez niniejszego użytkownika |
» 2010-05-31 13:18:52 Druga postać zatrzymuje mi się ponieważ: if( kolizja(...) == false { } else if( kolizja(...) == true { if( key[ KEY_RIGHT ] ) { ludek.x--; } if( key[ KEY_LEFT ] ) { ludek.x++; } if( key[ KEY_DOWN ] ) { ludek.y--; } if( key[ KEY_UP ] ) { ludek.y++; } } Jeśli kolizja jest prawdziwa nie wykonuje funkcji poruszających drugą postacią. Pisząc tego posta chyba sam sobie odpowiedziałem. Teraz już nie mam czasu, żeby to sprawdzić, ale może zrobić tak samo z postacią pierwszą. |
|
« 1 » |