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);
こんな感じ。