コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 4.6 新機能「SetParent」

// ワールド座標系の位置情報を保持する
transform.parent = parent;
transform.SetParent( parent );
transform.SetParent( parent, true );

// ワールド座標系の位置情報を親オブジェクトのローカル座標系に変換する
transform.SetParent( parent, false );

Unity 4.6 で「SetParent」という関数が Transform に追加されました

これまで、transform.parent で親オブジェクトを設定する時に
親オブジェクトの位置や大きさによって子オブジェクトの transform のパラメータが変わってしまうため
ローカル座標を維持したまま親オブジェクトを設定したい場合は下記のような処理が必要でした

var localPosition = transform.localPosition;
var localRotatopn = transform.localRotation;
var localScale = transform.localScale;
transform.parent = parent;
transform.localPosition = localPosition;
transform.localRotation = localRotatopn;
transform.localScale = localScale;

Unity 4.6 で追加された SetParent 関数を使用して
第 2 引数に true を渡すことで、この処理は不要になります