CapsuleとCubeを作りました。Capsuleにはアニメーションが付いており、Cubeはワールド原点の真上にあります。
スクリプトを使ってCubeをCapsuleの子にします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestScriipt2 : MonoBehaviour
{
[SerializeField] Transform parent;
[SerializeField] Transform child;
public void SetParent(bool worldPositionStays)
{
child.SetParent(parent, worldPositionStays);
}
public void SetParent()
{
child.parent = parent;
}
}
子のTransform.parentに親のトランスフォームを代入すると、子のCubeは、Capsuleと一緒にその場で回り始めます。
親子関係を作るときに、子のワールド座標が保たれています。なので、親子関係をつくったあとにCubeのトランスフォームを見ると、ローカル座標が変更されています。
これはSetParentメソッドの第二引数をtrueにしたときと同じです。SetParentメソッドの第二引数はデフォルトでtrueになっています。
第二引数をfalseにすると、CubeはCapsuleの真上に来ます。このとき、Cubeのローカル座標は元の座標と同じになっていて、その代わりに、ワールド空間での位置は変わっていることがわかります。
Cubeを初めから別のゲームポブジェクトの子にすると、第二引数がfalseのときは、前の親との位置関係を保ったまま親を変更できます。