Einzelnen Beitrag anzeigen

acidrain

Registriert seit: 18. Mär 2012
17 Beiträge
 
#1

OpenGL Ballkollision bei Pong

  Alt 26. Mär 2012, 17:22
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

Geändert von acidrain (26. Mär 2012 um 17:25 Uhr)
  Mit Zitat antworten Zitat