【Unity】スクリプトからTransformのparentとposition、またはrotationを設定すると、ローカル座標になってしまう問題
こんにちは、電車君です。
スクリプトからTransformのparentとposition、またはrotation(eulerAngles含む)を設定すると、positionやrotationがワールド座標ではなくローカル座標になってしまうことがあります。
また、SetParentの第二引数を設定しても解決しない場合もあります。
またこの問題の不可解な点は、先にparentを設定しても問題が起きることです。
普通に考えたらparentを設定したあとにpositionでワールド座標を設定できると思いますが、設定した座標がローカル座標になってしまいます。
要するに親オブジェクトの座標がxとすると、子オブジェクトの座標は2xになってしまうのです。
私の解決方法としては、parentを設定してlocalPositionにローカル座標を入れることにしています。
その場合はpositionにいれるワールド座標をローカル座標に変換する必要がありますので注意してください。
私がこの問題にあったバージョンは2017.3.1です。
現在のバージョンでは解決されているかもしれません。