日本の風呂ワールドに不可欠なギミック群
- https://vpm.narazaka.net/ から「Add to VCC」ボタンを押してリポジトリをVCCにインストールします。
- VCCでSettings→Packages→Installed Repositoriesの一覧中で「Narazaka VPM Listing」にチェックが付いていることを確認します。
- アバタープロジェクトの「Manage Project」から「YUTOROOM Essentials」をインストールします。
入浴剤によるお湯の色変化
- VRCPickup+ObjectSyncで投げられる入浴剤コライダーと、同数のマテリアル、アクティブオブジェクトを指定します。
- アクティブオブジェクトには水面下PostProcessing Volumeなどを指定します。
ドリンクを飲む音
- VRCPickupのついた飲み物オブジェクトに
DrinkSoundPickup
を付けます。 - その飲み物オブジェクトの子に
DrinkSound
prefabを配置します。 - それぞれを参照させます。
DrinkSound
のAudioSourceに飲む音を設定します。(飲む音を設定したprefab variantを作ると便利だと思います。)
- YUTOROOMの飲む音はこちらを使用しました。 ごくごく飲む(ニコニ・コモンズ)
- 同期されて聞こえるようにしようかと思ったがやめた。
- その名残でDrinkSoundPickupがManual Syncになっているため、飲み物オブジェクトにはManualObjectSyncを付けることを推奨します。
風呂の水面に浮くオブジェクト
- 風呂桶のような凹面があり空気が入るオブジェクト
- アヒルのおもちゃ(ラバーダック)のような上面が決定しているオブジェクト
- 浮き輪のような上下面が反転可能なオブジェクト
などを自然に浮かせる事が出来ます。
上手い具合に数値調整などをする必要があり設定はそれなりに煩雑です。
- 水の領域コライダー
WaterCollider
- 水面高さTransform
WaterColliderTop
- 水面直上の大気領域コライダー
AirCollider
を設定します。
サンプルはSamples/FloatingObject/風呂桶sample.prefab
にあります。
VRCPickupのついた風呂桶オブジェクトの下に以下を設定します。
- 開口部を覆うコライダーを作り、
FloatingObjectTop
コンポーネントを追加します。- 下記の
FloatingObject
コンポーネントを参照させます。
- 下記の
- オブジェクトの形状に沿ったコライダーを作り、
FloatingObject
コンポーネントを追加します。 - サンプルを参考に各種設定を行ってください。
- CanInvertはfalse
サンプルはSamples/FloatingObject/ラバーダックsample.prefab
にあります。
- オブジェクトの形状に沿ったコライダーを作り、
FloatingObject
コンポーネントを追加します。 - サンプルを参考に各種設定を行ってください。
サンプルはSamples/FloatingObject/裏表sample.prefab
にあります。
- オブジェクトの形状に沿ったコライダーを作り、
FloatingObject
コンポーネントを追加します。 - サンプルを参考に各種設定を行ってください。
サンプルはSamples/FloatingObject/ビーチボールsample.prefab
にあります。
- オブジェクトの形状に沿ったコライダーを作り、
FloatingObject
コンポーネントを追加します。 - サンプルを参考に各種設定を行ってください。
- Isotropic=true
- TopPosition/CenterOfMass/StableFloatPositionについてローカルY座標を中心からの径として設定します
上下位置が安定した後左右に振動する場合はAngularDampeningFactorの桁を小さくしてみて下さい。
親に追従するPickupオブジェクト
- 親のコライダー内にDropされたオブジェクトは以後親に追従するようになります
- 親のコライダー外にDropされたオブジェクトは以後親に追従しなくなります
風呂桶に酒瓶を置くなどに利用できます。 Drop時に子の位置や向きの補正等は行わないので「トレーに載せる」要件などでは不自然になります。
- 子となるPickupオブジェクトにParentConstraintを追加し、親オブジェクトをSourcesに指定します。Activeにはしません。
- 同オブジェクトに
FollowPickup
コンポーネントを追加し、Parentに親オブジェクトの追従領域コライダーを指定します。 - 子オブジェクトは親オブジェクトの外に置きます(ヒエラルキー上の親子関係にはしない)
水中に潜る時の効果
潜る時の音や視界効果を設定するのに適しています。
InWater
prefabを配置し、水中コライダーの位置を合わせます。- 音系とAudioLowPassFilterを指定します。
- VRChatワールドではAudioListenerをシーン上に置いておくとプレイヤーのAudioListenerを上書きします。これを利用してAudioLowPassFilterを指定できます。
- AudioSourceのサンプルが
Samples/AudioSource.prefab
にあるのでシーンに配置し参照して下さい。
- AudioSourceのサンプルが
- YUTOROOMでの音は以下の通りです
- 水中音(StaySound): 水中泳ぐ・潜水 by On-Jin ~音人~
- 出入りの音: 【効果音】風呂/オコジョ彗星 をカット編集したもの
- VRChatワールドではAudioListenerをシーン上に置いておくとプレイヤーのAudioListenerを上書きします。これを利用してAudioLowPassFilterを指定できます。
- 水中のPostProcessing Volumeを制御する場合、入れ子構造にして親を操作すると
BathBombSystem
と連携できます。
オブジェクトのON/OFFに連動してAudioReverbFilterをON/OFFします
- オブジェクトに
ToggleReverbByActive
を付けて、AudioReverbFilterを指定します。 - このオブジェクトをコライダー判定などでactive/inactiveにするとAudioReverbFilterが連動します。
- AudioSourceのサンプルが
Samples/AudioSource.prefab
にあるのでシーンに配置し参照して下さい。
- AudioSourceのサンプルが
コライダーにプレイヤーやPickupオブジェクトが出たり入ったりする時に音を出します
- 水中コライダーに
TriggerInOutSound
コンポーネントを付けます。 - AudioSourcesに音を再生するAudioSourceを何個か設定します。
- 発声上限に引っかからないようオブジェクトプール的に使いまわします。
- 各種の音を設定します。
YUTOROOMで利用している他のシステムとしては以下などがあります。
(というかむしろ、これらの高い没入感を醸成する重要な要素技術が既にあるにも関わらず風呂ワールドで活用されていないことに歯がゆさを覚えてYUTOROOMが作られたという面が大きいです。これらに加えて付随する風呂体験を作り込んでさらに質を高めようとした周辺技術が本ライブラリの内容なので、とりあえず風呂ワールドを作ろうという場合にはまずは下記の適用を先に行う方が効果的だと思います。)
- お風呂水面の波紋: InteractiveWater (VRC向け触れる水)
- お風呂の水しぶき: ばしゃばしゃ水遊びシステム【VRChatワールド用】
- 足でも反応する&音が出るように改変しています
- 1.1.0
- FloatingObjectで等方的なオブジェクトをサポート
- 1.0.0
- リリース