orangegirl’s blog

Unityを使用していて気付いた点などのメモ帳

カメラを揺らしてもUGUIが揺れなくて困った話(と対処法)

Unityで制作中のゲームで、演出としてカメラを揺らそうと試みたところ、カメラは揺れるもののCanvas内のImageが揺れなくて困った…ということがあったので、備忘録として書いておきます。
なお、カメラを揺らすのはDoTweenのShakePositionを使用しています。



原因はCanvasの設定

原因は単純な話で、Canvasの設定を「Screen Space - Camera」にしていたせいでした。
(なお、「Screen Space - Overlay」にしている場合でも揺れません)

f:id:orange__girl:20200718101407p:plain

「Screen Space - Camera」にしていると、Render Cameraの位置とCanvasの位置が同期するので、UGUIの表示が揺れることはありません。

以下の画像では、Scene Viewではカメラごと豪快に揺れていますが、Game Viewでは何の変化もないので、ちょっと混乱してしまいますね。

f:id:orange__girl:20200718101535g:plain



Canvasの設定を「World Space」にする

Canvasの設定を「World Space」にすると、そのCanvasは3D空間上に通常のオブジェクトとして存在することになります。

「Screen Space」のようにカメラと位置の同期を行ったりはしないので、カメラを揺らすとCanvas内のImageやButtonが揺れるようになりました。

f:id:orange__girl:20200718101526p:plain

f:id:orange__girl:20200718101610g:plain


普段、Screen Spaceの二種類しか使う機会がなかったため、今回の件で困るまで、World Spaceのことは正直失念していました。

下記の記事が参考になりました。感謝です🙏

tech.pjin.jp

© Unity Technologies Japan/UCL