UnityでスクリプトからPrefabを呼び出す際に、Prefabのサイズが変わってしまいます。
解決済
回答 1
投稿
- 評価
- クリップ 1
- VIEW 9,167
Unity5.6.1を使用中です。
衝突判定を利用して、Cubeにjiki_shotが当たったらHPを
減らし、0になったら爆発という処理の中で、
Project>Assets>Resources>の階層にある爆発のPrefabを
スクリプト側から呼び出しているのですが、
爆発がCubeの内側で(?)小さく発生してしまいます。
Scene上にPrefabを落としてテストする分には、正しい
大きさで発生するのですが…。
エラーメッセージは特に発生していません。
CubeにアタッチしているC#スクリプトは次の通りです。
void OnCollisionEnter(Collision collision) //他の物体と衝突した時
{
if (collision.gameObject.tag == "jiki_shot")//自機ショットと衝突した場合
{
//Enemyとぶつかった時実行
HP -= bullet.jiki_shot_attack;
if (HP < 0)
{
GameObject prefab = Resources.Load<GameObject>("ETF_M_Big Bang");
Instantiate(prefab, this.transform.position , Quaternion.identity);
Destroy(this.gameObject);
}
}
}
Inspecotr側でサイズを調整しても結果は変わらず、
Cubeの大きさ以上にはなっていません。
また、爆発のPrefabは単体としてResourcesから呼び出している形です
(親子関係などにはしておりません)
InstantiateでPrefabを生成する時に、Scaleを指定したり、
元々のScalenoまま呼び出したりすることができるのでしょうか。
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
Instantiateした際の親(もしくはシーンの座標系)が関係してスケーリングがされてしまっているのが原因かと思われます。
もしくはPrefab内で特殊なShaderを使って、親オブジェクトの座標系と比率して表示させているかです。
中身不明のアセットをPrefabで使っていないのであれば、前者だと思われます。
コードとしては
GameObject obj=Instantiate(prefab, this.transform.position , Quaternion.identity)as GameObject;
obj.transform.scale=new Vector3(10,10,10);//希望する値
でスケーリングできるかと思われます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
sakura_hana
2017/06/23 10:58
スクリプトから生成した時とシーン上にドロップした時を比べて、PositionやScaleに違いは出ていますか? また、爆発はParticleでしょうか?
tuisekimode
2017/06/23 15:35
シーン上にドロップした際は通常サイズでした。あくまでカメラから見て、ですが。爆発はAssetStoreかIimportしたElemental Freeというものです。ParticleSystemを使っています。
sakura_hana
2017/06/23 16:36
カメラから見てではなく、TransformのPositionやScaleの値を比較して違いはありますか?
tuisekimode
2017/06/23 16:56
CubeのScaleを変更しても、Transformの値を弄って、例えば爆発PrefabをCubeオブジェクトより大きいScaleにしても、Cubeのサイズに収まるように発生しています。あとこのコードの書き方のせいか、爆発の最中も衝突判定をしています。このあたりに原因があるのでしょうか。