- 【3Dゲームエンジン】Unity 5
319 :名前は開発中のものです。[sage]:2011/10/09(日) 19:38:06.16 ID:XDwFvqMz - >>317
transform.parent が親オブジェクトを指してるから public GameObject changeweapon; void Update(){ if( Input.GetButtonDown("File1") ){ var obj = (GameObject)Instantiate(changeweapon, transform.position, transform.rotation); obj.transform.parent = transform.parent; Destroy(gameObject); } } これで動くはず。
|
- 【3Dゲームエンジン】Unity 5
328 :名前は開発中のものです。[sage]:2011/10/09(日) 22:03:48.54 ID:XDwFvqMz - >>326
元のソースの public Transform changeweapon; を public GameObject changeweapon; にしてある? 武器オブジェクトを生成するんだから Transform じゃなくて GameObject そのものを扱ったほうがいいと思ったんだけど。 (InvalidCastException は Transform から GameObject にキャストできませんってエラー) 後者のエラーはプレハブの親は弄れませんという内容で、 changeweapon.parent = t.parent; (プレハブの親に、生成したオブジェクトの親を設定) のところを t.parent = transform.parent; (生成したオブジェクトの親(Bazooka)に、スクリプトがアタッチされてるオブジェクト(BeamRifle)の親を設定) とすれば通るはず。 こっちでも上手くいくけど上記の理由から GameObject で扱った方がいいかなーと思います。
|
- 【3Dゲームエンジン】Unity 5
329 :328[sage]:2011/10/09(日) 22:07:51.11 ID:XDwFvqMz - 間違いました
×(生成したオブジェクトの親(Bazooka)に、スクリプトがアタッチされてるオブジェクト(BeamRifle)の親を設定) ↓ ○(生成したオブジェクト(Bazooka)の親に、スクリプトがアタッチされてるオブジェクト(BeamRifle)の親を設定)
|