Kollisionsabfrage von 3D-Modellen in Types

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: Kollisionsabfrage von 3D-Modellen in Types

BeitragDi, Nov 13, 2007 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe Probleme mit dem abfragen bzw. löschen von 3D-Objekten in Types.
Bestimmte zerstörbare Level-Objekte lade ich anfangs, vor der Main-Loop. Dabei benutze ich Types, jedes Objekt wird also in Form eines Types gespeichert.

Wenn nun geschossen wird, loope ich alle diese Types durch und prüfe sie auf Kollision mit dem Schuss.
Falls diese stattfindet, soll das entsprechende 3D-Modell dass diesem Type zugehörig ist verschwinden, und anschließend der Type-Eintrag gleich ganz gelöscht werden.
Dazu benutze ich folgende Code-Zeile (im Falle eines abgefeuerten Schusses) - Die Schüsse besitzen die Entity-Type Zuordnung "12":

Code: [AUSKLAPPEN]
   
          For piep.TLevelObject = EACH TLevelObject
             If EntityCollided(piep\model,12) Then
                FreeEntity piep\model
                DELETE piep.TLevelObject
             EndIf
          Next


Das funktioniert aber nicht. Die beschossenen Modelle löschen sich nicht. Was mache ich denn falsch? Sad

Wie kann ich denn überhaupt die Identität des bestimmten Types ermitteln, das gerade mit dem Schuss kollidiert?
  • Zuletzt bearbeitet von Nerle am Di, Nov 13, 2007 18:26, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, Nov 13, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
benutzt du parallel dazu countcollisions etc? (wäre übrigens die sinnvollere art das zu lösen, weil du da direkt die Objekte zurück bekommst die kollisieren und nicht alle testen musst selbst wenn sie nichts damit zu tun haben)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Nerle

BeitragDi, Nov 13, 2007 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Dreamora,
Ich habe eben mal in der OH nachgeschlagen - verstehe aber noch nicht, wie CountCollision mir helfen kann. Dadurch wird doch nur die Anzahl der Kollision ermittelt, die stattgefunden haben, oder?

Im entsprechenden Code-Sample wird allerdings der Befehl CollisionEntity erwähnt, und da steht, dass dadurch die Identität des entsprechenden Objekts ermittelt wird.

Also hab ich´s mal so getestet (EntityType 1 ist das zerstörbare Level-Objekt):

Code: [AUSKLAPPEN]

          If EntityCollided(schuss\model,1) Then
             Entity = CollisionEntity(schuss\model,1)
             FreeEntity Entity
          EndIf


Was nicht funktioniert. Ich steh jetzt leider total auf dem Schlauch. Sad
Und der komplette Type des Level-Objekts wäre damit ja auch noch nicht gelöscht.
 

Dreamora

BeitragDi, Nov 13, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage war ob du es benutzt. Denn genau dann geht es nicht wenn du Collided nutzt und CollisionEntity.

Du kannst jedoch CollisionEntity benutzen und zwar in einer For loop die CountCollisions benutzt (denn in CollisionEntity gibst du die nummer der kollision an, nicht kollisionstypen oder so)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group