トップページ > ゲ製作技術 > 2011年10月09日 > jfSR8K/s

書き込み順位&時間帯一覧

9 位/113 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000010000001103



使用した名前一覧書き込んだスレッド一覧
名前は開発中のものです。
317
【3Dゲームエンジン】Unity 5

書き込みレス一覧

【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にしとかないとまずいですよね

ありがとうございました


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。