我已经将HUD相机的父变换设置为它所围绕的物体的变换#';#orbiting'。麻烦的是,当我然后设置子变换的位置时,它仍然被移动到全局'坐标。
我在Unity编辑器中对此进行了测试,暂停了游戏,而HUD摄像机确实是父对象的子级(它列在该对象的层次结构下)。
这里的Unity教程......
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摄像机的位置,使其相对于父变换位置,如果不是通过将其设置为父对象的子项然后设置其位置? 谢谢。
答案 0 :(得分:1)
而不是hudCamera.transform.parent = hudSelectedObject.transform;
使用此:
hudCamera.transform.SetParent(hudSelectedObject.transform);
hudCamera.transform.localScale = Vector3.one;
hudCamera.transform.localPosition= Vector3.zero; // Or desired position
答案 1 :(得分:0)
每当您以编程方式实例化UI项目时。每当我通过代码添加任何UI项目。我使用以下代码(更新它供您使用)
hudCamera.transform.SetParent(hudSelectedObject.transform);
hudCamera.transform.localScale = Vector3.one;
hudCamera.GetComponent<RectTransform>().sizeDelta = Vector2.zero;