2016-08-12 8 views
0

HUDカメラの変換の親を、「周回軌道」のオブジェクトの変換に設定しました。問題は、子トランスフォームの位置を設定すると、まだグローバル座標に移動されていることです。Unityの親に対する相対的な子変換の位置の設定

これをUnityエディタでテストして、ゲームを一時停止しました.HUDカメラは、実際には親オブジェクトの子です(そのオブジェクトの階層の下に表示されています)。

ここユニティチュートリアル...
https://unity3d.com/learn/tutorials/topics/interface-essentials/hierarchy-and-parent-child-relationships
...はビデオに約45秒から(オブジェクトが別の子とされた後、その位置は、親オブジェクトに相対的である、ことをかなり明確らしいです)。しかし、Unityエディタでこれをプログラムと手動で行うことに違いがありますか?

は、ここに私の関連するコードです:

親オブジェクトは、0、0、0に位置していないので、それは、子オブジェクトの位置が0、0に対して設定されているだけのことではありませんされて
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? 

したがって、親オブジェクトの子として設定し、その位置を設定するだけではなく、親トランスフォームの位置を基準にしてHUDカメラの位置をプログラムで設定しますか?おかげさまで

答えて

1

代わりのhudCamera.transform.parent = hudSelectedObject.transform;

この使用する:あなたがプログラムでUIアイテムをインスタンス化するたびに

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

を。コードを使用してUIアイテムを追加するたびに。私は次のコードを使用します(使用のために更新しました)

hudCamera.transform.SetParent(hudSelectedObject.transform); 

hudCamera.transform.localScale = Vector3.one;  
hudCamera.GetComponent<RectTransform>().sizeDelta = Vector2.zero; 
関連する問題