![]() |
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...
|
Re: Kollisionstest mit GLScene schlägt fehl...
Kann man alles bekommen, sonst mag ich nicht debuggen. ;)
|
Re: Kollisionstest mit GLScene schlägt fehl...
das ist bis jetzt alles. auser der ausfürgaren datei und die war etwas zu gruß zum mitschicken.
ich sagte ja das es ein (noch sehr) kleines Spiel ist/wird. |
Re: Kollisionstest mit GLScene schlägt fehl...
Hätte gern die *.dpr und die Form dazu, die Bilder's brauch ich nicht.
Ich kann sonst nicht den Debugger anwerfen denn ich werde nicht di efehlenden Teile dazubauen. ;) Zur Not auch per PN. |
Re: Kollisionstest mit GLScene schlägt fehl...
Ich sagte bereits, das ist ein Programm welches mit Lazarus geschrieben wurde und somit ist die datei die du suchst die mit .lpr ...
|
Re: Kollisionstest mit GLScene schlägt fehl...
Entschuldige, ich hatte nur die Unit1.pas im Explorer stehen. Warum auch immer... alle Dateien sind da und es kann los gehen.
:wall: |
Re: Kollisionstest mit GLScene schlägt fehl...
ok, findest du irgentetwas?
|
Re: Kollisionstest mit GLScene schlägt fehl...
Japp.
a)
Code:
b)
procedure TForm1.FormCreate(Sender: TObject);
var col, col2: tglbcollision; begin col := tglbcollision.Create(GLCube1.Behaviours); col.BoundingMode := cbmCube; col.Manager := CollisionManager1; col.Name := 'Collision'; GLCube1.Behaviours.Add(col); col2 := tglbcollision.Create(GLCube2.Behaviours); col2.BoundingMode := cbmCube; col2.Manager := CollisionManager1; col2.Name := 'Collision'; [b]GLCube2[/b].Behaviours.Add(col2); Im GLSceneEditor bei Cube2 im Behaviours die Collision rausschmeissen. c) Die Timer kannst du weg lassen, mach es mit dem Cadencer. |
Re: Kollisionstest mit GLScene schlägt fehl...
Danke. jetzt fukt alles ^^
Ich bin nur bis gerade eben nicht zum Proggen gekommen... gruß Teekeks |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 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