はじめに
- Unityでいつもよく見える視界を少し薄暗くできないかと試行錯誤してみました
- Objectをメインカメラの目の前に設置し、そのObjectのシェーダを半透明のようにするスクリプトとすることで実現させています
できること
- Unity上で見えるメインカメラの視界を薄暗くします
- 下のような薄暗いメインカメラになります
- VRHMDなど360度見渡せるような環境においては未確認ですが、おそらく正面のみ(Objectのサイズ範囲のみ)半透明のように見えると思われます
- 360度半透明にする場合は、おそらく作成したObjectをメインカメラの正面だけでなく、後ろ、左右、上下と設置することで実現できるのではないかと思われます(メインカメラとの距離の調整が大変かもしれませんね…)
前提条件
- Unity 2022.3.3
やり方
-
Unityの新規プロジェクトを作成します
-
Materialをassetファイルのどこでもよいので作成します
-
Unityエディターで右クリック > Create > Shader > UnlitShaderを選択します
-
作成したシェーダーに以下のコードで書き換えます
・サンプルとしてファイル名を「TransparentOverlay」としassetフォルダ直下に作成しましたShader "Custom/TransparentOverlay" { Properties { _Color("Color", Color) = (0,0,0,0.5) } SubShader { Tags {"Queue" = "Transparent" "RenderType" = "Transparent"} LOD 100 CGPROGRAM #pragma surface surf Lambert alpha fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf(Input IN, inout SurfaceOutput o) { o.Albedo = _Color.rgb; o.Alpha = _Color.a; } ENDCG } FallBack "Diffuse" }
-
新しく作成しておいたMaterialに上記で作成したシェーダーをアタッチします
- シェーダファイルをMaterialのところでドラックアンドドロップします
-
Materialを選択して、Inspectorから「Color」を選択して色や透明度を変更します
- 今回は色を黒として、透明度を210として実施しました
- この際に、hierarchyにQuadを追加して、作成したMaterialをアタッチする。そしてそのQuadをメインカメラの目の前(座標的には0.1だけずらすようにしておく)におくと色を変えたときに確認しやすくなります