Witam. :) Piszę może z troszkę głupim pytaniem ale mam problem z mechanizmem kolizji z odcinka: https://www.youtube.com/watch?v=I_vW4KQ99Yk Otóż piłka nie wiem czemu potrafi zbić za jednym uderzeniem nawet pół planszy klocków. Wygląda to trochę jakby bool nie wykrywał kolizji z drugiej jednak strony to niemożliwe gdyż klocki znikają. Myślę że problem leży po stronie tego że może zbić więcej niż jeden klocek w poziomej linii tyle że piłka potrafi zbić 1, a następnie 2 i nawet 3 linie cegieł. Nie wiem jednak co dopisać i tu proszę o pomoc. Mam nadzieję że dobrze to wytłumaczyłem. :)
Oto bool kolizji(jest to w timerze):
bool collision(TImage * ball, TImage * brick)
{
if(ball->Left >= brick->Left-ball->Width &&
ball->Left <= brick->Left+brick->Width &&
ball->Top >= brick->Top-ball->Height &&
ball->Top <= brick->Top+brick->Height)
{ return true; }else return false;
}
A to ify dla każdej z cegieł:
//brick1 collision
if(collision(b, brick1) && brick1->Visible==true)
{ x=-x; y=-y; to_win--; brick1->Visible=false; }
//brick2 collision
if(collision(b, brick2) && brick2->Visible==true)
{ x=-x; y=-y; to_win--; brick2->Visible=false; }
//brick3 collision
if(collision(b, brick3) && brick3->Visible==true)
{ x=-x; y=-y; to_win--; brick3->Visible=false; }
//brick4 collision
if(collision(b, brick4) && brick4->Visible==true)
{ x=-x; y=-y; to_win--; brick4->Visible=false; }
//brick5 collision
if(collision(b, brick5) && brick5->Visible==true)
{ x=-x; y=-y; to_win--; brick5->Visible=false; }
//brick6 collision
if(collision(b, brick6) && brick6->Visible==true)
{ x=-x; y=-y; to_win--; brick6->Visible=false; }
//brick7 collision
if(collision(b, brick7) && brick7->Visible==true)
{ x=-x; y=-y; to_win--; brick7->Visible=false; }
//brick8 collision
if(collision(b, brick8) && brick8->Visible==true)
{ x=-x; y=-y; to_win--; brick8->Visible=false; }
//brick9 collision
if(collision(b, brick9) && brick9->Visible==true)
{ x=-x; y=-y; to_win--; brick9->Visible=false; }
//brick10 collision
if(collision(b, brick10) && brick10->Visible==true)
{ x=-x; y=-y; to_win--; brick10->Visible=false; }
//brick11 collision
if(collision(b, brick11) && brick11->Visible==true)
{ x=-x; y=-y; to_win--; brick11->Visible=false; }
//brick12 collision
if(collision(b, brick12) && brick12->Visible==true)
{ x=-x; y=-y; to_win--; brick12->Visible=false; }
//brick13 collision
if(collision(b, brick13) && brick13->Visible==true)
{ x=-x; y=-y; to_win--; brick13->Visible=false; }
//brick14 collision
if(collision(b, brick14) && brick14->Visible==true)
{ x=-x; y=-y; to_win--; brick14->Visible=false; }
//brick15 collision
if(collision(b, brick15) && brick15->Visible==true)
{ x=-x; y=-y; to_win--; brick15->Visible=false; }
//brick16 collision
if(collision(b, brick16) && brick16->Visible==true)
{ x=-x; y=-y; to_win--; brick16->Visible=false; }
//brick17 collision
if(collision(b, brick17) && brick17->Visible==true)
{ x=-x; y=-y; to_win--; brick17->Visible=false; }
//brick18 collision
if(collision(b, brick18) && brick18->Visible==true)
{ x=-x; y=-y; to_win--; brick18->Visible=false; }
//brick19 collision
if(collision(b, brick19) && brick19->Visible==true)
{ x=-x; y=-y; to_win--; brick19->Visible=false; }
//brick20 collision
if(collision(b, brick20) && brick20->Visible==true)
{ x=-x; y=-y; to_win--; brick20->Visible=false; }
Z góry dziękuję za pomoc. To moje początki z tego typu programami, a bardzo chciałbym zrozumieć czemu to nie działa jak należy.