2017-09-25 1 views
1

Unity UIを使用しています。実行時に親の変更位置になると、UI要素の子はlocalPostionを変更しません。

私は画像と子供の画像を含む親を持っています - すべてキャンバスの中にあります。

私は親から敵を召喚するために子画像の位置を使用しています。

私は実行時に親画像を移動して、子の位置も親と一緒に移動することが予想されるインスペクタを見ます(正しい位置に敵をスポーンする)。

シーンビューで子画像が親とともに移動しますが、子のRectTransformのLocalPostionは親と一緒に変更されないため、正しい位置にスポーンすることはできません。

私が行方不明です...

答えて

2

何かを推測するシーン内の任意の要素の局所的な位置は、それがどのような「ローカル」な手段ですが、親の位置を基準にしています。

要素の最終的なワールド位置は、その親のワールド位置に対するローカル位置です。無回転/拡大縮小が関与していないと仮定すると、

は、その後、世界の位置は次のように定義されています

transform.position = transform.parent.position + transform.localPosition 

だから、何を見ていることが予想されるものです。

+0

ありがとうございました!何らかの理由から、あなたが書いたコード部分を必要とせずに、親の位置に基づいて子の位置を更新する必要があるメモリを追加します。 – Dror

+0

また、['transform.TransformPoint()'](https://docs.unity3d.com/ScriptReference/Transform.TransformPoint.html)を使用することもできます。いくつかのレベルの階層的な親子関係があり、シーン空間の座標に戻したい場合に役立ちます。 – Draco18s

+0

私は間違ってはいません。私の答えのどこからでもそのコードを追加する必要はありません。Unityは自動的にすべての要素のバックグラウンドでこれを行います。私はちょうどそれがどのように動作するか説明するためにそれを書いた。 –

関連する問題