Hej,
tworzę Arkanoida w C++ Builderze i mam problem z odbijaniem się piłki od bloków. Piłka zdaje się raz przelatywać przez bloki bez odbicia, a raz odbija się w nie ten kierunek co trzeba. Kombinowałem już na wiele sposobów, ale żaden nie działał poprawnie. Poniżej wklejam kod, który ma za zadanie wychwycić sytuację, gdy piłka natrafi na blok z każdej z czerech stron oraz zareagować. Proszę o pomoc i ewentualne sugestie. Z góry dziękuję.
if ((ball->Left+ball->Width>=Square->Left) &&
(ball->Left<=Square->Left+Square->Width)&&
(ball->Top<=Square->Top+Square->Height) &&
(ball->Top>=Square->Top+Square->Height-3) &&
(x>0)&&(Square->Visible==true))
{
x=-x;
Square->Visible=false;
}
else if((ball->Top+ball->Height>=Square->Top) &&
(ball->Top<=Square->Top+Square->Height) &&
(ball->Left<=Square->Left+Square->Width)&&
(ball->Left>=Square->Left+Square->Width+3)&&
(y<0)&&(Square->Visible==true))
{
y=-y;
Square->Visible=false;
}
else if((ball->Top+ball->Height>=Square->Top) &&
(ball->Top<=Square->Top+Square->Height) &&
(ball->Left+ball->Width>=Square->Left) &&
(ball->Left+ball->Width<=Square->Left-3) &&
(y>0)&&(Square->Visible==true))
{
x=-x;
Square->Visible=false;
}
else if ((ball->Left+ball->Width>=Square->Left) &&
(ball->Left<=Square->Left+Square->Width) &&
(ball->Top+ball->Width>=Square->Top) &&
(ball->Top+ball->Width<=Square->Top+3) &&
(x<0)&&(Square->Visible==true))
{
y=-y;
Square->Visible=false;
}
ball - piłka
Square - blok