2016-08-12 42 views
0

我已经将HUD相机的变换的父元素设置为“轨道”对象的变换。麻烦的是,当我设置子变换的位置时,它仍然被移动到'全局'坐标。在Unity中设置子变换相对于父元素的位置

我已经在Unity编辑器中测试了这个,暂停了游戏,HUD相机确实是父对象的子元素(它在该对象的层次结构下列出)。

的统一教程这里...
https://unity3d.com/learn/tutorials/topics/interface-essentials/hierarchy-and-parent-child-relationships
...似乎很清楚的是,一旦对象是由另一个孩子,它的位置是相对父对象(约45秒后进入视频)。但是,在Unity编辑器中以编程方式和手动方式执行此操作有什么区别?

这里是我的相关代码:

hudCamera.transform.parent = hudSelectedObject.transform; 
hudCamera.transform.position = new Vector3(0, 0, -50); // this still moves the HUD camera to global position 0, 0, -50 - why? 

父对象不位于0,0,0,所以它不只是子对象的位置相对于0,0集,0

那么,如何通过程序设置HUD相机的位置,使其与父变换位置相对,如果不是将其设置为父对象的子元件,然后设置其位置? 谢谢。

回答

1

而不是hudCamera.transform.parent = hudSelectedObject.transform;

使用此:

hudCamera.transform.SetParent(hudSelectedObject.transform); 
hudCamera.transform.localScale = Vector3.one; 
hudCamera.transform.localPosition= Vector3.zero; // Or desired position 
0

当你实例化UI项目编程。每当我通过代码添加任何UI项目。我使用以下代码(更新它供您使用)

hudCamera.transform.SetParent(hudSelectedObject.transform); 

hudCamera.transform.localScale = Vector3.one;  
hudCamera.GetComponent<RectTransform>().sizeDelta = Vector2.zero; 
相关问题