VRChatワールドで暗闇空間を作るスイッチを作ってみましょう。
(基本操作は分かるものとし、画像も合わせて載せているので、少し説明を端折っているところもありますがご了承ください)
Unityで完全の暗闇の暗黒空間を作るためにはDirectional Lightを非表示にさせるだけではできません。
非表示にさせるだけでは黄昏の夕方のようなオレンジ色の背景になってしまいます。
Light(ライト)そのものの光の方向を対象から別方向にアニメーションで動かす必要があります。
unityで完全暗闇の暗黒空間を作る
Directional LightからCreateで光の方向を変えたアニメーションを作ります。
左のHierarchyでDirectional Lightをクリックして選択状態で、
メニューのWindow→Animationで、AnimationをCreate(作成)します。
画像では仮に名前は2new Animationとしました。(任意でいいです)
左のHierarchyでDirectional Lightをクリックして選択状態でAnimationのタブを開いた状態でAnimation作成。
Sceneを見ながら動かします。
今回はDirectional Lightの方向をほぼ左右反転の位置にします。
Previewの横の赤い●を押して、Animationの0:00の位置に初期状態のDirectional Light:PositionとDirectional Light:Rotationのキーを打ち込みます。
そして0:01に縦線を動かして、
次にSceneでDirectional Lightを真逆の方向に動かします。
unityの左上のマークの基本操作で動かす✚の縦移動や↺で動かします。
すると暗闇になります。
動かすと自動でキーが打ち込まれます。
終わったら赤い●をもう一度押して終了です。
AnimatorとAnimationのファイルが自動生成されているはずです。
Directional LightにAnimatorとAnimationを追加
HierarchyのDirectional Lightを選択して、
InspectorにはADD ComponentでAnimatorとAnimationを追加。
AnimatorのControllerにDirectional Lightオブジェクトを追加。
AnimationにCreateされたAnimationファイルを追加。
Inspectorの
Animationのチェックを外す。
Animatorのチェックを外す。
Play AutomaticallyとAnimete Physicsのチェックも外す。
(上画像参照)
暗闇のON/OFFを制御するワールドのスイッチトリガーを作る
メニューのGameObject→3D Object→cubeでスイッチを作ります。
Add ComponentでVRC_Triggerを追加アタッチし、Advanced Modeにチェック、OnInteract(スイッチ)、その隣はAlwaysBufferOne(※)にします。
(※)AlwaysBufferOne・・そのワールドの全員がトリガーを押すことができて全員に共有される。かつあとから入ってきたプレーヤーに最後に実行された状態が実行される。状態を同期するには最適。単なるAlwaysより良いのは最後の実行状態だけ反映されるので軽い。
Actionsに追加していきます。
1つ目は
Actions
SetgameObjectActive
Receivers
にDirectional Light
OperationはToggleに。
2つ目は
Actions
SetComponentActive(UnityEngine.Animation)
Receivers
にDirectional Light
CommponetはUnityEngine.Animation
EnableはToggleに。
これでスイッチを押すと暗闇になります。
(※)
ただし、VRChat内では、Toggleを利用するとAlwaysであっても同期ズレすることが多いです。
ここまで方法を書いておいて恐縮ですが、なので結局一つのスイッチでToggleせずに、ONとOFFのスイッチを2つ別々で作って、
1つ目のON用スイッチはSetgameObjectActiveのOperationはTrue(ON)。
2つ目のOFFの用スイッチはFalse(OFF)。
1つ目のON用スイッチはSetComponentActive(UnityEngine.Animation)のEnableはTrue(ON)。
2つ目のOFF用スイッチはFalse(OFF)。
と制御すると確実ではあります。
スカイボックスを黒くする
もしこの方法でも暗闇にならない場合、スカイボックスも暗くしましょう。
・AnimationでDirectional Lightの暗くしたキーで●を押して
Inspectorのlightのチェックをオフに。
Colorを黒に。
●で録画を終了。
・メニューのwindows→Lighting→Settings→Scne→SkyboxMaterial→Materialを「none」→Anbient Color→HDRを黒にする
(ちなみに灰色にすると薄っすら暗くなります)