Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kollisionen bei GLScene (https://www.delphipraxis.net/76233-kollisionen-bei-glscene.html)

Ironmaster 31. Aug 2006 17:22


Kollisionen bei GLScene
 
Hallo

ich benutze zur zeit GLScene für 3d-programmierung und arbeite gerade an einem ping pong-spiel. kennt ihr vielleicht. oben und unten 2 balken. ziel ist es den ball hinter den gegnerischen balken rollen zu lassen.

wie kann ich es programmieren, dass der ball von der wand abprallt, also von der wand reflektiert wird. muss ich den collisionsmanager benutzen oder mir selbst ne physik schreiben?

danke schon mal.

inherited 31. Aug 2006 18:03

Re: Kollisionen bei GLScene
 
Nö, dafür reicht der Collisionmanager. EInfach dem Ball und den Beiden Schlägern unter "effects" eine Collision hinzufügen und deren Coll-Manager auf deinen Colisionsmanager setzen. In der OnCollision des CM machen was immer du willst
Du musst allerdings regelmäßig mit Collisionmanager1.CheckCollision; nach Kollisionen "fahnden"^^

arbu man 31. Aug 2006 18:08

Re: Kollisionen bei GLScene
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zum Collisionsmanger von GLScene: Der Kollisionsmanager dient nur dazu zu erkenen ob eine Kollision auftrit nicht wo diese Kollision ist.

Naja also für pingpong sollte man die abfragen eben selber machen sien ja nicht viele wie auf dem bild zu sehen ist.

inherited 31. Aug 2006 18:10

Re: Kollisionen bei GLScene
 
Na und? Man kann ja mit Object1/2.Name oder Hint herausfindes, was kollidiert ist!

arbu man 1. Sep 2006 12:08

Re: Kollisionen bei GLScene
 
Gut so kann man es auch machen allerdings wäre das schon mehr aufwand als es eben selber zu schreiben. Auch dürfte eine eigene Lösung in diesen 2D Fall schneller sein. Was man nun nimt ist aber letztlich egal...

Bei der GLScene Demo Pong wird alles mit Vectoren gemacht...

Ironmaster 3. Sep 2006 20:00

Re: Kollisionen bei GLScene
 
ok, ich habe es genau so gemacht wie inherited es beschrieben hat, nur leider reagiert der Kollisionsmanager gar nicht auf

Delphi-Quellcode:
CollisionsManager1.CheckCollisions;
was mache ich falsch???

turboPASCAL 4. Sep 2006 08:17

Re: Kollisionen bei GLScene
 
Genau so ? Das kann ich an dem Stückchen Code gar nicht so sehen. :stupid:

Pseudocode:
Code:
procedure TForm.Timer;
begin
  CollisionManager1.CheckCollisions;
end;

procedure TForm.CollisionManager1Collision(object1,
  object2: TGLBaseSceneObject); // hoffe mal das stimmt so
begin
   Kollision ist zwischen Object1(.Name) und Object2(.Name)
end;

Ironmaster 4. Sep 2006 14:58

Re: Kollisionen bei GLScene
 
ok, das habe ich jetzt hinbekommen. jetzt habe ich neue probleme: bis jetzt habe ich den ball mit

Delphi-Quellcode:
Ball.Position.XYZ := Ball.Position.XYZ + 0,5
bewegt. dabei treten fehler auf. z.b. das der ball einfach aus dem spielfeld austritt. mir ist klar, warum das so ist.
jetzt möchte ich es mit vektoren (die mit sicherheit genauer in bewegungen sind) versuchen.

jetzt meine frage: wie benutze ich sie???

danke schon mal

arbu man 4. Sep 2006 15:14

Re: Kollisionen bei GLScene
 
Nun nim keine Vektoren sondern die GLScene Functionen TGLBaseSceneObject.Move TGLBaseSceneObject.Turn etc.
Nun mach Bewegungen in einen Cadencer da man hierbei alle werte mit deltaTime multiplisieren kann so werden die Bewegungen auf allen Rechern genau und immer Gleich schnell.

inherited 4. Sep 2006 16:22

Re: Kollisionen bei GLScene
 
Und gleich die CheckCollision mit in den Cadencer.OnProgress^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz