![]() |
Kollisionstest mit GLScene schlägt fehl...
Hi!
Ich programmiere momentan ein kleines 3D-Spiel mit GLScene. Ich habe ein Problem mit
Delphi-Quellcode:
dort tuhe ich folgendes:
CollisionManager1.Checkcollisions;
Delphi-Quellcode:
aber irgentwie scheint mir als würde
procedure TForm1.CollisionManager1Collision(Sender: TObject; object1,
object2: TGLBaseSceneObject); begin if ((Object1.Name='GLCube1') or (Object2.Name='GLCube1')) then gut:=false else gut:=true; end;
Delphi-Quellcode:
garnicht aufgerufen werden...
CollisionManager1.Checkcollisions;
zuweisen tu ich das folgendermaßen:
Delphi-Quellcode:
Ich habe keinerlei ahnung was hier nicht hinhaut...
procedure TForm1.FormCreate(Sender: TObject);
var col:tglbcollision; begin col:=tglbcollision.Create(GLCube1.Behaviours); col.BoundingMode:=cbmCube; col.Manager:=CollisionManager1; col.Name:='Collision'; GLCube1.Behaviours.Add(col); // ab hier unwichtig //also: ... end; [edit] hatte mich verschrieben... |
Re: Kollisionstest mit GLScene schlägt fehl...
Was mir sofort ins Auge fällt:
Delphi-Quellcode:
GLCube1 collidiiert mit sich selbet ? Und dann auch noch als "or" ?
if ((Object1.Name='GLCube1') or (Object2.Name='GLCube1')) then
Man würde doch sagen, collidiieren Objekt1 und Objekt2 ? Also:
Delphi-Quellcode:
if ((Object1.Name='GLCube1') and (Object2.Name='GLCube2')) then
|
Re: Kollisionstest mit GLScene schlägt fehl...
Naja mir gehts mit
Delphi-Quellcode:
eigentlich nur darum ob einer der Kollidierenden Körper GLCube1 ist oder nicht.
if ((Object1.Name='GLCube1') or (Object2.Name='GLCube1')) then
Und eigentlich könnte ja dieser GLCube1 genausogut in Object1 wie in Object2 sein... Oder habe ich einen Denkfehler? aber schonmahl danke fürs bemühen... gruß Teekeks |
Re: Kollisionstest mit GLScene schlägt fehl...
Zitat:
Das OR nicht falsch wie von mir Behaupted. Hast du den CollisionManager in OnProgress vom GLCadencer eingetragen ?
Delphi-Quellcode:
procedure TFormX.GLCadencerXProgress(Sender: TObject; const deltaTime,
newTime: Double); begin CollisionManagerX.CheckCollisions; end; |
Re: Kollisionstest mit GLScene schlägt fehl...
ich habs jetz auch nochmahl mit deiner variante ausprobiert... der Körper Cube geht ganz sauber durch den anderen durch → Schlecht!
Ich hab auch eher den verdacht das der... dam! sag mal, der 2.Cube muss doch bestimmt auch von dem CollisionManager gesteuert werden... probiere ich gleich mal aus... |
Re: Kollisionstest mit GLScene schlägt fehl...
hmmm, geht immernoch glatt durch.
jetzt habe ich das so gelößt:
Delphi-Quellcode:
procedure TForm1.CollisionManager1Collision(Sender: TObject; object1,
object2: TGLBaseSceneObject); begin if ((Object1.Name='GLCube1') and (Object2.Name='GLCube2')) or ((Object1.Name='GLCube2') and (Object2.Name='GLCube1')) then gut:=false else gut:=true; end; |
Re: Kollisionstest mit GLScene schlägt fehl...
Man kann auch seine Beiträge editieren! ;)
Ich habe es mal gemacht, siehe Post #4. |
Re: Kollisionstest mit GLScene schlägt fehl...
hmm, stimmt kann man machen, ist aber jetzt zuspät... :P aber für die Zukunft.
und: Ja ich habe es in den Cadencer eingetragen. |
Re: Kollisionstest mit GLScene schlägt fehl...
Häng es mal an, nun will ichs wissen was fehlt...
|
Re: Kollisionstest mit GLScene schlägt fehl...
Liste der Anhänge anzeigen (Anzahl: 1)
hier bitte, ist aber ja für Lazarus...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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