質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

950閲覧

3Dのゲームで2Dの画像をワールド座標的に固定させたい!

slap_

総合スコア2

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/10/08 04:01

編集2020/10/08 04:02

前提・実現したいこと

Unityで3Dゲームを開発しています。
ワールド空間を使って3D空間に2D画像を描画したいです。
UIの描画はUI Canvas上で出来ています。

発生している問題・エラーメッセージ

2D画像がCanvas上にあるのにGameビューで描画されない。
UIとして表示するCanvasの上に置いた画像は描画された。

該当のソースコード

ソースコードの問題ではなさそうです。

試したこと

キャンバス上のレンダーモードを「オーバーレイ」から「ワールド空間」に変更
映したい「main camera」に映るようにCanvas座標の変更

補足情報(FW/ツールのバージョンなど)

Unity 2019 3.1f1にて開発中です。
Visual studio 2015を利用しています。
ビルド形式はAndroid(.apk)です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/10/08 12:03

「2D画像」はコンポーネントで言うと何ですか? 例えばSpriteRendererの場合はCanvasとは無関係です。 「2D画像がCanvas上にあるのにGameビューで描画されない。UIとして表示するCanvasの上に置いた画像は描画された。」の意味もわからないので、適切に説明してください。 (「SpriteRendererにテクスチャをセットし、そのGameObjectをCanvasの子オブジェクトにしても描画されない。同じテクスチャをImageコンポーネントにセットして、そのGameObjectを同じCanvasの子オブジェクトにしたら描画された」など)
slap_

2020/10/08 13:31

お疲れ様です。 Canvas内にImageコンポーネントを設置してテクスチャを貼り付けました。 不足している情報がありましたら返信ください。説明力と技術が不足しており申し訳ありません。
guest

回答1

0

ベストアンサー

おそらくですが、Canvas の RectTransform の scale が大きすぎるのが原因だと思います。

Canvas の World Space(ワールド空間) での大きさは (RectTransform の width,height)*(RectTransform の scale) です。

RectTransform の width,height の初期値はGameビューの解像度(800,400くらい)なので RectTransform の scale = 0.01 くらいに設定しましょう。※ RectTransform の width,height はCanvas自体の解像度です。

また RectTransform の PosX,Y = 400,200 くらいになっているはずなので、 RectTransform の PosX,Y = 0 にしてから動かしましょう。

下記の記事が参考になると思います。
テラシュールブログ |【Unity】uGUIのWorld Spaceを楽に配置したい

投稿2020/10/08 16:52

編集2020/10/12 11:47
u824

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

slap_

2020/10/09 07:44

設定に手間取ってしまい返信が遅くなってしまい申し訳ありません。 シーンビューでmain camera→canvas(ご指摘の設定どおり)→後ろの3Dオブジェクト のように設定したのですがCanvas内に設定したUIが全く表示されません。 この場合、UIを使わず別表記にしたほうがいいのでしょうか?
u824

2020/10/09 10:16

まず Canvas上のUIは片面のみの描画になっているはずなので UIのTransform.rotation.y = 180 にしてGameビューに表示されるか確認しましょう。 これでダメなら他に原因があるので、スクリーンショットを質問に追加してもらえるとアドバイスしやすいです。 Canvas を World Spase で利用することは特別なことではないので安心してください。(VRのUIとか) ですが他に方法がないわけではありません。 例えば Quad の GameObject を作って(Cube作るときと同じ。CubeじゃなくてQuad選べばOK)、スクリプトでこの Quad の Renderer.material.mainTexture に表示させたいテクスチャを割り当てればOKです。
slap_

2020/10/09 15:37 編集

返信では画像の添付ができないので外部アップローダーサイトにてスクリーンショットを添付します。 rotationを反転させてもgameビューに表示されませんでした。 最悪解決策が出ない場合Quadに描画する方法を使用することを検討していますがスクリプト上で変化させる予定ですのでできるだけCanvas上で行いたいと思います。 お手数をかけて申し訳ありません。 【スクリーンショット】 http://imepic.jp/20201010/017690
u824

2020/10/11 07:52

画像添付ありがとうございます。Sceneビューで画像が描画されているので、Canvasの設定は正しそうですね。 カメラの範囲内にUIが配置されていないようにぱっと見えます。青いGameObejctと同じ位置にUIを配置してみてください。 >スクリプト上で変化させる予定 一応、Quadの場合もスクリプト(Renderer.material.mainTexture)で設定可能です。画像を表示するのみならQuadで良いかと。ですがUI用途なら、Canvas単位でUIを管理できたり、EventSystemが利用出来る、などの利点があるのでCanvasの方が良いですね。
slap_

2020/10/12 10:33

カメラの位置と合わせなおしたところ、無事ゲームビューに描画されました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問