使用层次结构为对象创建父项时,单击并拖动该对象并将其放入另一个游戏对象中。
使用脚本为对象创建父项时,它看起来像这样
myObject.transform.SetParent(parentObject, false);
现在,如果您观看GIF,您将看到两种不同的育儿方法为子对象转换值产生不同的结果。对于子对象,结果的位置和比例是不同的,具体取决于使用对象父项的方法。
当通过脚本生成父母时,如何通过单击和拖动在层次结构中为父级生成相同的结果?
编辑:忘记在观看gif时添加,您可以先看到点击并拖动父级,然后观察变换值的变化。然后,我控制Z撤消更改,单击进入场景视图,然后执行按钮,将“蓝色”游戏对象的父级设置为“myObject”。注意,当通过后一种方法完成父化时,您将看到变换值不会改变。
答案 0 :(得分:2)
如果我们检查Unity's API documentation for the SetParent()方法,我们可以更好地了解此方法的工作原理。在我的情况下,我使用的方法使用了两个参数:
父:
The parent Transform to use
worldPositionStays:
When false the object keeps its local orientation rather than its global
对于我的问题,有两个简单的解决方案:
将worldPositionStays参数设置为true,以便修改父对象位置,缩放和旋转,使子对象保持与以前相同的世界空间位置,旋转和缩放,或
仅使用父参数的SetParent()方法,有效地产生与将worldPositionStays设置为true完全相同的结果。