Guten Tag liebe Community,
ich bräuchte eure Hilfe bei meinem Ballkollisionsproblem.
Ich hab viele Theorien aufgestellt, wie ich den Verlauf des Balles in x/y-Richtung (abhängig vom Gegenstand, auf den der Ball aufprallt) umkehren kann.
bx und by sind bei diesem Beispiel auch die jeweiligen Koordinaten des Balles, an denen er sich zum genauen Zeitpunkt befindet.
Ich denke auch, dass es bei mir eher ein mathematisches Problem ist, als ein Problem mit Delphi/
OpenGL.
Code:
procedure TForm1.Ball;
var k1,k2,bx,by: extended;
begin
if (by<=20) and (by>=-12) and (bx>=-30.5) and (bx<=30.5) then
begin
by:=by+0.005;
k1:=bx-0.005;
k2:=by-0.005;
bx:=bx+0.005;
end
else if by>=20 then
begin
by:=k2;
end;
if by>=20 then by:=k2;
glPushMatrix();
glTranslatef(0, 0, -50);
glTranslated(bx, by, 0);
glBegin(GL_QUADS);
glColor3f(0, 1, 0); glVertex3f(-1,1,-1);
glColor3f(0, 1, 0); glVertex3f(-1,-1,-1);
glColor3f(0, 1, 0); glVertex3f(1,-1,-1);
glColor3f(0, 1, 0); glVertex3f(1,1,-1);
glEnd;
glPopMatrix();
end;
Ich hoffe, dass mein Code für euch verständlich ist.
Kleine Anmerkung: wenn by<=20 ist, dann trifft der Ball die obere Bande, die untere trifft er bei by>=-12.
bx<=30.5 ist das Auftreffen beim rechten Schläger und bx>=-30.5 das Auftreffen beim Linken.
EDIT: Da bx und by unbekannt sind, muss ich auf die jeweils kommen um immer 0.005 davon subtrahieren zu können und somit die Richtung umkehren kann. Da kommt wohl Mathematik infrage, die ich nicht sehr gut beherrsche.
Vielen Dank für eure Hilfe.
MfG,
acidrain