2017-02-24 5 views
0

Ich habe ein Problem, wenn die Position von Kind als Elternposition festgelegt wurde.Gameobject Position kann nicht der übergeordneten Position folgen Unity

Unter dem Screenshot:

enter image description here

Mein Skript:

RightNext.transform.GetChild (0).gameObject.transform.SetParent (TemporaryPage.transform,false); // TemporaryPage = Cherry Cake 

RightNext.transform.GetChild (0).GetComponent<RectTransform>().localScale = new Vector3 (1, 1, 1); 
      RightNext.transform.GetChild (0).gameObject.transform.parent = RightNext.transform; 
      RightNext.transform.GetChild (0).transform.position = RightNext.transform.position; 

und ich habe es Update in die Position zu ändern, um sicherzustellen, ist es nicht.

Warum ist meine Kinderposition nicht innerhalb und gleiche Position mit Eltern, auch ich habe es auf die gleiche Position mit Eltern?

Dank

Dennis

+0

Ist Ihr untergeordnetes Objekt Position auf 0 gesetzt? –

+0

Nein .. Wenn es auf 0 gesetzt ist, was ich benutze? .Localposition oder .position? –

+0

Auf der Transformationskomponente des untergeordneten Objekts –

Antwort

0

Sie müssen diese Zeile ändern:

RightNext.transform.GetChild (0).transform.position = RightNext.transform.position; 

dazu:

RightNext.transform.GetChild(0).GetComponent<RectTransform>().localPosition = Vector2.zero; 

ODER dies:

RightNext.transform.GetChild(0).GetComponent<RectTransform>().position = RightNext.transform.GetComponent<RectTransform>().position; 

Bearbeiten Sie nach Ihrem Kommentar: die beiden Zeilen, die ich vorgeschlagen habe, werden verwendet, um den Kinddrehpunkt mit dem Elterndrehpunkt übereinstimmen, ich dachte, dass Sie das wollten und nicht immer den Kindobjektdrehpunkt immer in der Mitte des Elternobjekts platzieren von seinem Drehpunkt.

Mit der Linie, die Sie vorgeschlagen (Sie können die 2D-Version verwenden können, da wir mit UI zu tun hat):

RightNext.transform.GetChild(0).GetComponent<RectTransform>().anchoredPosition = Vector2.zero; 

Sie das Kind Pivot-Objekt in der Mitte des Mutter setzen, so müssen Sie festlegen das Kind schwenkt um (0,5,0,5).

Allerdings empfehle ich dringend, Referenzen auf die RectTransform von Eltern und Kind in der Start-Methode (oder nach dem Instanziieren eines neuen Kind), um die konstante Verwendung der GetComponent-Methode in Update zu vermeiden, da es eine langsame Methode ist .

+0

Ich versuche das schon. Die Position wird verschoben, aber nicht innerhalb der Eltern-Mittelposition. Also ich füge das hinzu RightNext.transform.GetChild (0) .GetComponent () .anchoredPosition3D = new Vector3 (0, 0, 0); und das ist gearbeitet. Bitte fügen Sie dies der Antwort hinzu. Ich werde es ankreuzen. Vielen Dank –

Verwandte Themen