2016-03-24 7 views
1

Ich habe vor kurzem erstellt einfache Level-Generator, der eine Ebene mit Segmenten erstellt. Ich habe mesh.bounds.x verwendet, um zu sehen, wie weit vom vorherigen Segment das nächste Segment platziert werden sollte. Es funktionierte für mich ziemlich gut, weil alle Segmente quadratisch waren. Jetzt habe ich beschlossen, diese Arbeit mit größeren Segmenten mit den anderen Seitenverhältnissen (immer noch recht rechteckig) zu machen. Mein Problem ist, dass obwohl ich viele Kombinationen ausprobiert habe, ich das nicht richtig einrichten konnte.Wie verwendet man mesh.bounds in Unity?

Kann mir jemand erklären, wie das mesh.bound funktioniert? Ich instanziiere auch gedrehte Segmente, vielleicht verursacht dies einige Fehler? Alle meine Prefabs werden aus dem Mixer importiert.

Es ist ein Teil meiner Code, wo ich ein Segment instanziiert (bevor ich komplexere Segmente entschieden.):

size = meshh.bounds.size; 

if ((x == 0) && (y == 0)) 
{ 
    segments[x, y] = Instantiate(prefabs[0], new Vector3(segments[1, 1].transform.position.x - size.x, segments[1, 1].transform.position.y, segments[1, 1].transform.position.z + size.x), segments[1, 1].transform.rotation) as GameObject; 

    segments[x, y].tag = "Terrain"; 
} 

Antwort

2

Ihr spezifisches Problem ist, dass ein Begrenzungskasten macht eine Platz Box in Weltraum ... das heißt " achsversetzt ".

AABB steht für AXIS ALIGNED Bounding Box.

Es SIND NICHT die „Grenzen“, wie Sie von „Grenzen“ in der konventionellen englischen Bedeutung dieses Wortes denken würden.

Genau wie Sie sagen, wenn Sie ein gedrehtes Objekt haben, gibt es Ihnen die größte "flache" Box im Welt-Raum, die das Ding enthält.

Dies ist eine grundlegende 3D-Konstruktion.

enter image description here

Hinweis Das Diagramm zeigt "AABB" "-Achse-aligned" Bounding-Boxen. Gleiches gilt in 3D.

Ich hoffe, es hilft.

(Wenn Sie mit diesem in einer fortgeschrittenen Art und Weise umgehen, zu vorsichtig sein, weil das Grenzen des Mesh in Unity-lokalem Raum zum Verwechseln AABB Grenzen sind dh in dem Raum des Eltern - Einsatz renderer.bounds für Szene-Raum - mach dir darüber keine Gedanken, bis du dazu kommst :) Es gibt verschiedene "Grenzen", die du in Unity verwenden kannst, die alle verwirrend sind.)

Übrigens - ein KISS-Weg, damit umzugehen, wenn du fange gerade an: dreh einfach das Objekt, bis es quadratisch ist, also keine Drehung. Dann die Messung erhalten! Drehe es dann dorthin, wo du es brauchst.

2

Bounds beschreiben die das kleinste Feld Ihre Masche in passen würde Box ist in Welt Platz. Im Grunde genommen, wie diese weißen Ecken in 3ds Max:

3dsMax selection box

Mesh.bounds on Unity Docs

+0

Ich korrigierte einen Tippfehler - die Idee einer AABB-Box ist, dass es tatsächlich im Weltall ist. – Fattie

Verwandte Themen