2015-05-25 28 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高有关。 –