Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 02, 2025 07:43

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL Ballkollision bei Pong
BeitragVerfasst: Mi Mär 28, 2012 16:21 
Offline
DGL Member

Registriert: So Mär 25, 2012 00:26
Beiträge: 2
Programmiersprache: Delphi
Hi,
ich bräuchte mal eure Hilfe bei der Ballkollision.
Hier mein Quelltext dazu:
Code:
  1. procedure TForm1.Ballbewegung(t: real);
  2. var Kollision: real;
  3. begin
  4.    // Kollisionszeitpunkte ausrechnen
  5.   if (BallRi.y <> 0) then
  6.     Kollision := (20 - BallPos.Y) / BallRi.Y
  7.   else
  8.     Kollision := t;
  9.  
  10.   if (BallRi.Y <> 0) then
  11.     Kollision := (-20 - BallPos.Y) / BallRi.Y
  12.   else
  13.     Kollision := t;
  14.  
  15.   if (BallRi.X <> 0)  then
  16.     Kollision := (s1 - BallPos.X) / BallRi.X
  17.   else
  18.     Kollision := t;
  19.  
  20.   if (BallRi.X <> 0)  then
  21.     Kollision := (s2 - BallPos.X) / BallRi.X
  22.   else
  23.     Kollision := t;
  24.  
  25.   if Kollision < t then
  26.   begin
  27.     // Bewegung zur Kollision
  28.     BallPos.Y := BallPos.Y + Kollision * BallRi.Y;
  29.     BallPos.X := BallPos.X + Kollision * BallRi.X;
  30.  
  31.     // Kollision durchführen
  32.     BallRi.Y := -BallRi.Y;
  33.   end;
  34.  
  35.   // Normal weiterbewegen
  36.   BallPos.Y := BallPos.Y + t * (0.1+BallRi.Y);
  37.   BallPos.X := BallPos.X + t * (0.1+BallRi.X);
  38.   end;


TVector ist versehen mit x,y und BallPos, BallRi.
s1 und s2 sind die derzeitigen y-Koordinaten der beiden Schläger
Der Ball bewegt sich zwar, prallt aber nicht ab.
Ich hoffe ihr könnt mir helfen.

Grüße,
acidrain


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Ballkollision bei Pong
BeitragVerfasst: Mi Mär 28, 2012 16:42 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ich bitte dich Kommentare in den Quellcode zu schreiben.
So ist er für uns besser zu verstehen. Zumal gehe ich davon aus, dass du beim Verfassen der Kommentare auch deine Lösung findest.

So wird Zeile 5-8 z.B. von 10-13 überschrieben und hat keinen Effekt.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Ballkollision bei Pong
BeitragVerfasst: Mi Mär 28, 2012 17:53 
Offline
DGL Member

Registriert: So Mär 25, 2012 00:26
Beiträge: 2
Programmiersprache: Delphi
Nun hab ich die Kollision speichern lassen auf Temp, aber der Ball bewegt sich nicht
Code:
  1. if (BallRi.y <> 0) then
  2.     begin
  3.       Temp := (20 - BallPos.Y) / BallRi.Y;
  4.       if (Temp>=0)and (Temp<Kollision) then
  5.         Kollision:=Temp;
  6.     end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Ballkollision bei Pong
BeitragVerfasst: Mi Mär 28, 2012 18:08 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Du müsstest es dennoch Kommentieren. So weiß ich nicht, was Kollision := (20 - BallPos.Y) / BallRi.Y macht.

Ansonsten hast du mal geschaut wie hoch deine FPS sind und was passiert, wenn die Kollision erkannt wird, wenn der Ball schon im Schläger ist? In diesem Fall wird ständig die Richtung geändert und er bleibt hängen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Ballkollision bei Pong
BeitragVerfasst: Do Mär 29, 2012 14:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

wir helfen natürlich auch hier gerne, aber vlt sollte man erwähnen, das es dazu schon ein Topic im Delphi-Forum gibt. So müssen wir nicht alles doppelt schreiben ;)

Kollision := (20 - BallPos.Y) / BallRi.Y berechnet die Zeit die der Ball bis zum Aufschlag an der Wand noch benötigt (20 is dabei die Wand). Wenn die Zeit kleiner als die Zeit zwischen den Frames ist (Kollision < t), dann muss die Kollision bearbeitet werden.

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]