![]() |
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. |
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"^^ |
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. |
Re: Kollisionen bei GLScene
Na und? Man kann ja mit Object1/2.Name oder Hint herausfindes, was kollidiert ist!
|
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... |
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:
was mache ich falsch???
CollisionsManager1.CheckCollisions;
|
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; |
Re: Kollisionen bei GLScene
ok, das habe ich jetzt hinbekommen. jetzt habe ich neue probleme: bis jetzt habe ich den ball mit
Delphi-Quellcode:
bewegt. dabei treten fehler auf. z.b. das der ball einfach aus dem spielfeld austritt. mir ist klar, warum das so ist.
Ball.Position.XYZ := Ball.Position.XYZ + 0,5
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 |
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. |
Re: Kollisionen bei GLScene
Und gleich die CheckCollision mit in den Cadencer.OnProgress^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz