2015-05-25 24 views
0

我需要根據前一個框的高度將一疊框放在彼此的頂部。Unity2d鄰接放置對象

箱子的高度是動態的。

foreach(cBox box in currentLevel.mMiddleRack.BoxWeightList) 
     { 
      box.mBoxImage = (GameObject) Instantiate(boxTemplate); 
      box.setBoxPosition(firstBoxPostion.x, firstBoxPostion.y, firstBoxPostion.z); 
      firstBoxPostion.y += box.mBoxImage.transform.localScale.y; 
      firstBoxPostion.z -= 1.0f; 

      box.shapeBox(); 
     } 

結果 enter image description here

+0

是高度相同的實例化框?如果不是,則需要存儲先前實例化的盒子的當地量程,並在放置新的不同大小的盒子時使用它。 – Varaquilex

+0

該任務書稱「箱子的高度是動態的」。因此,這些盒子可以是不同的尺寸。當地規模提供了原始大小(比例因子)的比例,它不給世界空間的單位。訪問世界空間中物體的界限需要的是訪問其對撞機或從其網格中確定它。 –

+0

框的大小是動態的並不一定意味着它們的大小是一致的。它們仍然可以是動態的 - 在運行時改變大小 - 並且具有不同的大小,因此OP可能需要在循環中實例化時檢查先前的框大小。 – Varaquilex

回答

1

Transform.localscale不提供物體的大小,除非對象巧合恰好有刻度作爲其大小(原始對象,它具有一個尺寸相同(1,1,1))。

嘗試通過使用BoxCollider或如果使用2D物理,BoxCollider2D來獲取對象的大小。使用size變量來幫助計算框的位置。

+0

* Transform.localscale不提供對象的大小,除非該對象恰好與其大小相同。* 這是錯誤的人。 [Transform.localScale](http://docs.unity3d.com/460/Documentation/Manual/class-Transform.html):「值」1「是原始大小(導入對象的大小)。 「 – Varaquilex

+0

這是怎麼回事? Transform.localScale與原始大小成比例,忽略單位空間。這個問題需要的是單位,而不是任意比例因子。 –

+0

似乎有什麼localscale實際代表混淆。具有10個單位寬,5個單位長和4個單位高的世界大小的對象可具有1的局部標度。這與原始網格爲10寬,5長和4高有關。 –