Densyakunのブログ

高校生プログラマの雑なブログです。ゲームを開発しています。

【Unity】スクリプトからTransformのparentとposition、またはrotationを設定すると、ローカル座標になってしまう問題

こんにちは、電車君です。

 

スクリプトからTransformのparentとposition、またはrotation(eulerAngles含む)を設定すると、positionやrotationがワールド座標ではなくローカル座標になってしまうことがあります。

また、SetParentの第二引数を設定しても解決しない場合もあります。

 

またこの問題の不可解な点は、先にparentを設定しても問題が起きることです。

普通に考えたらparentを設定したあとにpositionでワールド座標を設定できると思いますが、設定した座標がローカル座標になってしまいます。

要するに親オブジェクトの座標がxとすると、子オブジェクトの座標は2xになってしまうのです。

 

私の解決方法としては、parentを設定してlocalPositionにローカル座標を入れることにしています。

その場合はpositionにいれるワールド座標をローカル座標に変換する必要がありますので注意してください。

私がこの問題にあったバージョンは2017.3.1です。

現在のバージョンでは解決されているかもしれません。