Unity ゲームオブジェクトの親子関係

JSで書いた場合、この処理ではclone(コピーしたパーティクル)情報は、死なない。

コピーのタイミングで親子関係が解除される。

->親子関係はtransform.parentで持っているので当たり前だけど。

var particle : GameObject;

function OnCollisionEnter ( collisionInfo : Collision ) {
     GameObject.DestroyObject ( gameObject );
     var clone : GameObject = Instantiate ( particle, transform.position, transform.rotation ) as GameObject;

}

 

ただ、似たような処理をC#で描く場合、Instantiateの呼び出しが

 

Instantiate (particle, gameObject.transform) 

 

transform直渡しになり、parentもコピーされているようで、クローンが子供として生成される。

 

だから、親を殺すと子供も死ぬ。

JSと同様の流れにしたいなら、

 

            // パーティクルプロパティをコピー
            GameObject clone = Instantiate (particle, gameObject.transform) as GameObject;

            // 親子関係を解除
            clone.transform.parent = null;

            // 親を殺す
            GameObject.DestroyObject (gameObject);

            // 子供の死ぬタイミングを予約
            DestroyObject (clone,2f);

 

こんな感じ。