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

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

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

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

Unity

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

Q&A

解決済

1回答

555閲覧

カメラに関係なく、スプライトを常に画面に適用したい

modot

総合スコア1

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2021/11/03 11:25

前提・実現したいこと

3D上で、アニメーションのついた複数のカメラが順次切り替わるようなシーンを作成しています。
その際、カメラの動きや切り替えに関係なく、常に画面に半透明スプライトを重ねたいと思い、以下のコードのようにしました。

・質問1
editor上では機能するのですが、ビルドすると挙動が変わり、camera.mainが現在のカメラではなく、おそらく別のカメラ(シーン作成時のデフォルトのカメラ)を取得してしまいます。
これはスクリプト上の問題なのでしょうか?それともビルドの設定などの問題なのでしょうか?
初心者ですので、何か単純なことを見落としているのかもしれません。

・質問2
実現したいことは、”常に半透明スプライトを画面に適用したい” という単純なことなので、何か別のやり方はあるでしょうか?
(CanvasをオーバーレイにしてImageを配置するような感じで、スプライトを配置したい)
Update内で以下の処理をするのはパフォーマンス的にどうなのかという気もするので・・・

該当のソースコード

// private GameObject CurrentPanelParent; private GameObject CurrentCamera; public GameObject cameraPanel; //このオブジェクトの子としてスプライトがある Transform camerapanelTransform; void Start() { CurrentPanelParent = null; camerapanelTransform = cameraPanel.transform; } void Update() { CurrentCamera = Camera.main; if (CurrentPanelParent != CurrentCamera) { camerapanelTransform.parent = Camera.main.transform; camerapanelTransform.localPosition = new Vector3(0f, 0f, 0f); camerapanelTransform.localRotation = Quaternion.Euler(0f, 0f, 0f); CurrentPanelParent = CurrentCamera; } }

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

Unityバージョン 2020.3.17f1
HDRPでの作成です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

① camera.mainは「MainCamera」っていうタグのついたカメラを探すはずなので
タグがついたやつが複数ある状態になってませんか? カメラを複製したりするとたまに切り替え忘れてたりします

② パッとイメージができなかったんですが、全画面に半透明のせるってことですか…? Canvasだと都合が悪いようなイメージでしょうか?

投稿2021/11/08 01:41

hogefugapiyo

総合スコア3302

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

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

modot

2021/11/08 12:52

回答ありがとうございます。 ①に関しては、指摘の通り、関係ないカメラにタグが付いているのが原因でした。 時間の関係でビルドテストまではすぐにできないのですが、おそらくこれでカメラの方は解決すると思います。 ②については、説明不足ですみません、半透明というか、被写界深度のような効果のシェーダーを画面全体に適用するために、スプライトを画面いっぱいに表示しています。そのシェーダーがImageにはうまく適用できないが、スプライトにおいては機能するため、上記の様な質問をした次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問