Jump to content
Unity Insider Forum

Objekt an Position finden


erixx

Recommended Posts

Guten Tag.

Wie kann man ein bestimmtes Objekt an einer WorldPosition (Vector3) finden, ohne Physics oder 3 dimensionale Arrays zu verwenden? Es handelt sich um haeufige Abfragen sehr vieler Objekte/Positionen. Mein Gedanke war, jedem Objekt seine Position als Namen zu geben, und dann nur das Objekt mit der gewuenschten Position als Name zu suchen.

Gibt es da noch performance schonendere Vorgehensweisen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

 

Es wäre hilfreich, wenn du etwas genauer beschreiben würdest, was du machen willst.

Falls du sowas wie ein "Schachbrett" meinst und wissen willst, welche Objekte auf dem Feld X,Y sind, dann würde ich veranlassen, dass sich die Objekte selbst in die passende Liste ein- und wieder austragen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Thariel. Also es geht um ein 3d Pathfinding in einer Voxel Welt. Es gibt sehr viele Wuerfel die per code generiert und angeordnet werden, aber diese koennen sich auch zum Teil schnell veraendern. Also ihre Positionen, Rotationen und Zustaende, wie zB "begehbar", "abbaubar", usw sind dynamisch. Nun soll beim Pathfinding zB der Zustand des Wuerfels, der die NPC Position - (3,2,8) hat, überprüft werden. Das mit dem Schachbrett kommt schon hin, nur eben mit 3 Dimensionen, und die Form und Hoehe des Schachbrettes waeren dynamisch veraendrebar. Das alles aber haengt im 3d Raster, und nur ganze Zahlen spielen eine Rolle.Okay, dann werd ich das kombinieren. Die Wuerfel nach ihren Positionen benennen, eine Liste aller Wuerfel erstellen, und dann per IndexOf(positionToString) darauf zugreifen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich mach das so, dass ich die Welt in Chunks unterteile und die Chunks dann in einem Dictionary speichere, wie Zer0Cool schon gesagt hat

Dictionary<Vector3, Chunk> Chunks = .. 

Die Chunks haben dann einen Octree in dem die Voxel organisiert werden

D.h. wenn ich eine Position im Raum hab kann ich den entsprechenden Chunk finden und in dem dann das Voxel.

 

Zum finden des Chunks benutze ich übrigens immer Dictionary.TryGetValue(), das ist afaik die schnellste Methode ein Dict-Item zu kriegen, es kann aber auch null sein das muss man dann nochmal überprüfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...