2016-03-24 15 views
1

私は最近、セグメントでレベルを作成するシンプルレベルジェネレータを作成しました。私はmesh.bounds.xを使って、前のセグメントからどれくらい離れて次のセグメントを配置すべきかを見ました。すべてのセグメントが正方形だったので、それはかなりうまくいった。今私は、他の辺の比率(まだかなり長方形)の大きなセグメントでこの作業をすることにしました。私の問題は、多くの組み合わせを試しましたが、これを正しく設定できなかったことです。Unityでmesh.boundsを使用するには?

誰かが私にこのことをどのように説明することができますか?mesh.bound?私はまた、回転セグメントをインスタンス化、多分これはいくつかのバグを引き起こす?すべての私のプレハブはミキサーから輸入されています。

私は1つのセグメントをインスタンス私のコードの一部は、(私は、より複雑なセグメントを使用することにしました前に)あり:

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"; 
} 

答えて

2

あなたの特定の問題は、「バウンディングボックスがワールド空間平方ボックスを作る...それは言うことであるということです軸に位置合わせされる。

AABBはAXIS ALIGNEDバウンディングボックスの略です。あなたがその言葉の従来の英語の意味での「境界」と思うだろうと

それは、NOT「境界」です。

あなたが言うように、回転したオブジェクトを持っていれば、それは物事を保持する世界最大の「フラット」ボックスを与えます。

これは3Dエンジニアリングの基本です。

enter image description here

注意図は "AABB" "軸配向" バウンディングボックスを示しています。 3Dでも同様です。

希望します。

(あなたは、高度な方法でこの問題に対処したらメッシュの境界は親の空間でのユニティ・ローカル空間で紛らわしいAABB境界すなわちているので、あまりにも気をつけて - シーン空間のためのrenderer.boundsを使用します - あなたがそれに入るまでこれについて心配する必要はありません:)あなたがUnityで使うことができるさまざまな "境界"があり、それらはすべて混乱します。

ところで - これを扱う1つのKISS方法ちょうど出発するだけです:単純に、オブジェクトが正方形になるまで回転させます。つまり回転しません。 次にを取得してください!次に、必要な場所に回転します。

2

境界は、あなたのメッシュが中に収まるように最小のボックスを記述ボックスの世界です。スペース。基本的には3ds Maxの中にこれらの白のコーナーのように:

3dsMax selection box

Mesh.bounds on Unity Docs

+0

私は誤字を訂正しました.AABBボックスというアイデアは、確かにそれが世界の空間にあるということです。 – Fattie

関連する問題