万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

動的にColliderを子としてつける Unity

http://forum.unity3d.com/threads/111494-How-to-dynamically-create-EmptyObject-as-child-via-Script

void Start () {
        GameObject child = new GameObject(); // 空のオブジェクト
        child.AddComponent("BoxCollider");  // BoxのColliderを貼り付ける
        child.transform.parent = transform; //新しく作成した空のオブジェクトに自分をはっつける
}

5分で回答がきた。素晴らしい。

  • こうではなく。

親 GameObjectの子になると部分 ← 子 GameObject

  • こうする!

子 GameObjectの親となる部分 ← 親 GameObject


transformにchildというのがない。
this.gameObject.transform.parentなんてのがないのがミソ。

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

一応このようにプリミティブは作れるが、空GameObject作成のPrimitiveTypeは存在しなかった。そもそもプリミティブの位置づけではなさげ。


リファレンスに例がなくて気が付かないが
http://unity3d.com/support/documentation/ScriptReference/GameObject.GameObject.html

GameObjectに コンポーネントを引数にアタッチできるコンストラクタ が用意されてるので更に短くできる!

GameObject child = new GameObject("Empty", typeof(BoxCollider));