- 【3Dゲームエンジン】Unity 5
317 :名前は開発中のものです。[sage]:2011/10/09(日) 14:34:26.31 ID:jfSR8K/s - ちょっと聞きたいんですけど、ゲームオブジェクトの子オブジェクトだけを差し替えて且つ親子関係を維持するる方法解る人いますか?
Hierarchyで Gundam―BeamRifle てな感じで親子関係を作り、特定操作でBeamRifleをBazookaに差し替えるようなことをしたいわけです 一応BeamRifleのアセットに以下のスクリプトを入れて public Transform changeweapon; void Update () { // Fire1(Ctrl)が押されると自己を破壊してもう片方へ if (Input.GetButtonDown("Fire1")) { Destroy(gameObject); Instantiate(changeweapon, transform.position, transform.rotation); } } BeamRifleのInspecterにあるchangeweaponにBazookaをセット 一応Fire1を押したらBazookaに入れ替わりはするんですけど、親子関係が切れてしまうらしくGundamにアニメーションをさせても,BazookaがGundamのアニメに連動しなくなります 上手い方法ご存じの方いないでしょうか?
| - 【3Dゲームエンジン】Unity 5
326 :317[sage]:2011/10/09(日) 21:17:39.71 ID:jfSR8K/s - >>319
うーん、駄目っぽいですね var obj=.... のところで InvalidCastException: Cannot cast from source type to destination type. と吐いてBeamRifleが消えずにBazookaが再生中のフレームのところに出てきます 多分Instantiateでバグったのでそれ以降の処理が飛ばされて(?)います Instantiateにキャストをかけなければ通るので Transform t = (Transform)Instantiate(changeweapon, transform.position, transform.rotation); changeweapon.parent = t.parent; Destroy(gameObject); みたいな感じにしてtransformだけやってその直後にparentだけ合わせようとすると Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption. という感じでtransformの設定が無効化されます.この場合Destroyは効きます 何かparentの設定を行う関数でもあるんでしょうか?
| - 【3Dゲームエンジン】Unity 5
330 :317[sage]:2011/10/09(日) 22:19:13.99 ID:jfSR8K/s - >>328-329
仰るとおりTransformをGameObjectに直すのを忘れてました、何という凡ミス・・・ 確かにオブジェクト生成なのでGameObjectにしとかないとまずいですよね ありがとうございました
|
|