Schnellste Kollisionsabfrage zw. Terrain & viiielen Spri

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

x-pressive

Betreff: Schnellste Kollisionsabfrage zw. Terrain & viiielen Spri

BeitragDi, Feb 10, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe nun schon den ganzen Tag auf allen Seiten und Foren nach Beispielen gesucht, konnte aber leider inden.

Ich habe ein zerklüftetes Terrain, das in der Mitte eine Senke hat, in der eine Kannone steht. Das Ding rotzt Ammo raus ohne Ende Smile Allerdings sieht es recht unschön aus, wenn ein Schuss durch einen Hügel wandert -und am anderen Ende wieder hinaus, deswegen suche ich nach der schnellsten Methode, einige Dutzend Sprites pro Frame auf Kollision mit dem Terrain zu testen.

Die Schüsse sind als Types angelegt, ich loope bei jedem Durchlauf durch die Types und aktualisiere die Schüsse. Ich müsste genau wissen, WELCHES der Sprites mit dem Terrain kollidiert ist, damit ich es löschen kann. EntityCollided kann ich wohl vergessen, da zu langsam, und Collisions() liefert ja nur zurück, welche ObjektTYPEN kollidiert sind.

Irgendwie stehe ich auf dem Schlauch -oder sehe ich den Wald vor lauter Bäumen nicht..? Confused
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

x-pressive

BeitragMi, Feb 11, 2004 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Lösung? Nicht mal einen Ansatz? Crying or Very sad
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Arcanes

BeitragMi, Feb 11, 2004 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach der Standartprozedur hast Du es schon ausprobiert, ja? und das ist wirklich zu langsam? hm...

[/edit]
Vielleicht könntest Du an der Sprite-Position einfach die Terrain-Höhe überprüfen? - und wenn die niedriger ist als die Höhen-Position des Sprites, ist es ne Kollision... *so ganz spontan ungetestete Idee* Rolling Eyes
tHey pUt mE iN a rOuNd rOom tO diE
User posted image
http://www.myownmalice.de.vu

x-pressive

BeitragMi, Feb 11, 2004 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, im Moment gehe ich so vor:

Code: [AUSKLAPPEN]

;CHECK GROUND HITS
FOR i% = 1 TO CountCollisions(Terrain)
   For GunShot.TGunShot = Each TGunShot
      ;HIT GROUND? -REMOVE!
      If GunShot\Obj = CollisionEntity(Terrain,i)
         FreeEntity GunShot\Obj
         Delete GunShot
      End If
   NEXT
NEXT


Aber hier muß ich ebenn für jede erfolgte Kollision durch alle Schüsse loopen. Bei 50 Schüssen im Spiel und 10 Kollisionen wären das schon 500 loops. Geht bestimmt besser -aber wie..?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Feb 11, 2004 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm mit TerrainY die Terrain Höhe bei der Position des Schusses abfragen. Ist TerrainY höher als EntityY vom Schuss, so wird dieser gelöscht. Da musst du aber auch alle durchgehen und das nicht nur bei ner Kollision, sondern immer. Ich bezweifle also, dass das schneller ist - aber probieren kannst du es ja mal...
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

x-pressive

BeitragMi, Feb 11, 2004 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, da ich sowieso bei jedem Frame durch alle Schüsse loopen muß, um diese zu bewegen, habe ich das jetzt so gemacht:

Code: [AUSKLAPPEN]

;MOVE GUN SHOTS   
for GunShot.TGunShot = each TGunShot
   ;MOVE SHOT
   MoveEntity GunShot\Obj,0,0,-shotSpeed
   ;TERRAIN COLLISION? -REMOVE!
   If EntityCollided(GunShot\Obj, CT_TERRAIN)
      FreeEntity GunShot\Obj
      Delete GunShot
   End If
Next


So sind also keine Extra-loops nötig, und EntityCollided() löst ja keine Kollisionsabfrage aus, sondern schaut nur in einer Tabelle nach, soviel ich weiß. Dürfte also ok sein.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group