2016-08-12 1379 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; 
相關問題