概要
URPのDecalを使い、床との距離でサイズと透明度が変わる影を作りました。
床との距離はSphereCastで測っています。
コード
インスペクタ解説
変数 | 説明 |
---|---|
Decal | 影に使用している URP Decal Projector 同じ GameObject にコンポーネントがあれば自動で追加される |
Ray Radius | 床からの距離を測る SphereCast の半径 0を指定すると RayCast になる |
Ray Margin | Ray のゆとり 小さいと着地時に一瞬影が消える。大きいとRayが天井にぶつかる |
Ray Direction | 影を落とす方向 |
Ray Mask | Sphere Cast で利用する LayerMask |
Always Look Ray Dicrection | 常に Decal の Transform を Ray Dicrection に向かせる |
Base Size Rate | 最低影サイズ |
Add Size Rate | 影との距離に比例して大きくなる割合 |
Min Opacity Max Opacity |
最低透明度 最大透明度 |
Add Opacity Rate | 影との距離に比例して薄くなる割合 |
Decal のバグについて
影を Decal で描画する手法は、処理負荷を軽減するために採用される事が多いかと思います。
同じく処理負荷軽減で Render Scale を下げる事も多いかとも思います。
しかし、現状 2021.3 等のバージョンで両方を採用すると、下図のように Decal の表示がおかしくなります。
このバグは UnityForum で報告されており、URP 14.0.3 以降では修正されているようです。