/YutoroomEssentials

日本の風呂ワールドに不可欠なギミック群

Primary LanguageC#zlib LicenseZlib

YUTOROOM Essentials

日本の風呂ワールドに不可欠なギミック群

インストール

VCCによる方法

  1. https://vpm.narazaka.net/ から「Add to VCC」ボタンを押してリポジトリをVCCにインストールします。
  2. VCCでSettings→Packages→Installed Repositoriesの一覧中で「Narazaka VPM Listing」にチェックが付いていることを確認します。
  3. アバタープロジェクトの「Manage Project」から「YUTOROOM Essentials」をインストールします。

使い方

BathBombSystem

入浴剤によるお湯の色変化

inspector

  • VRCPickup+ObjectSyncで投げられる入浴剤コライダーと、同数のマテリアル、アクティブオブジェクトを指定します。
  • アクティブオブジェクトには水面下PostProcessing Volumeなどを指定します。

DrinkSound

ドリンクを飲む音

セットアップ

  1. VRCPickupのついた飲み物オブジェクトにDrinkSoundPickupを付けます。
  2. その飲み物オブジェクトの子にDrinkSound prefabを配置します。
  3. それぞれを参照させます。
  4. DrinkSoundのAudioSourceに飲む音を設定します。(飲む音を設定したprefab variantを作ると便利だと思います。)

既知の問題

  • 同期されて聞こえるようにしようかと思ったがやめた。
    • その名残でDrinkSoundPickupがManual Syncになっているため、飲み物オブジェクトにはManualObjectSyncを付けることを推奨します。

FloatingObject

風呂の水面に浮くオブジェクト

などを自然に浮かせる事が出来ます。

上手い具合に数値調整などをする必要があり設定はそれなりに煩雑です。

(共通) 水の領域コライダーを設定する

  • 水の領域コライダーWaterCollider
  • 水面高さTransformWaterColliderTop
  • 水面直上の大気領域コライダーAirCollider

を設定します。

colliders

風呂桶(凹面があり空気が入るオブジェクト)のセットアップ

サンプルはSamples/FloatingObject/風呂桶sample.prefabにあります。

VRCPickupのついた風呂桶オブジェクトの下に以下を設定します。

  • 開口部を覆うコライダーを作り、FloatingObjectTopコンポーネントを追加します。
    • 下記のFloatingObjectコンポーネントを参照させます。
  • オブジェクトの形状に沿ったコライダーを作り、FloatingObjectコンポーネントを追加します。
  • サンプルを参考に各種設定を行ってください。
    • CanInvertはfalse

inspector

アヒルのおもちゃ(上面が決定しているオブジェクト)

サンプルはSamples/FloatingObject/ラバーダックsample.prefabにあります。

  • オブジェクトの形状に沿ったコライダーを作り、FloatingObjectコンポーネントを追加します。
  • サンプルを参考に各種設定を行ってください。

inspector

浮き輪(上下面が反転可能なオブジェクト)

サンプルはSamples/FloatingObject/裏表sample.prefabにあります。

  • オブジェクトの形状に沿ったコライダーを作り、FloatingObjectコンポーネントを追加します。
  • サンプルを参考に各種設定を行ってください。

inspector

ビーチボール(等方的なオブジェクト)

サンプルはSamples/FloatingObject/ビーチボールsample.prefabにあります。

  • オブジェクトの形状に沿ったコライダーを作り、FloatingObjectコンポーネントを追加します。
  • サンプルを参考に各種設定を行ってください。
    • Isotropic=true
    • TopPosition/CenterOfMass/StableFloatPositionについてローカルY座標を中心からの径として設定します

inspector

Tips

上下位置が安定した後左右に振動する場合はAngularDampeningFactorの桁を小さくしてみて下さい。

FollowPickup

親に追従するPickupオブジェクト

  • 親のコライダー内にDropされたオブジェクトは以後親に追従するようになります
  • 親のコライダー外にDropされたオブジェクトは以後親に追従しなくなります

風呂桶に酒瓶を置くなどに利用できます。 Drop時に子の位置や向きの補正等は行わないので「トレーに載せる」要件などでは不自然になります。

セットアップ

  • 子となるPickupオブジェクトにParentConstraintを追加し、親オブジェクトをSourcesに指定します。Activeにはしません。
  • 同オブジェクトにFollowPickupコンポーネントを追加し、Parentに親オブジェクトの追従領域コライダーを指定します。
  • 子オブジェクトは親オブジェクトの外に置きます(ヒエラルキー上の親子関係にはしない)

inspector

InWater

水中に潜る時の効果

潜る時の音や視界効果を設定するのに適しています。

セットアップ

hierarchy

ToggleReverbByActive

オブジェクトのON/OFFに連動してAudioReverbFilterをON/OFFします

セットアップ

  • オブジェクトにToggleReverbByActiveを付けて、AudioReverbFilterを指定します。
  • このオブジェクトをコライダー判定などでactive/inactiveにするとAudioReverbFilterが連動します。
    • AudioSourceのサンプルがSamples/AudioSource.prefabにあるのでシーンに配置し参照して下さい。

TriggerInOutSound

コライダーにプレイヤーやPickupオブジェクトが出たり入ったりする時に音を出します

セットアップ

  • 水中コライダーにTriggerInOutSoundコンポーネントを付けます。
  • AudioSourcesに音を再生するAudioSourceを何個か設定します。
    • 発声上限に引っかからないようオブジェクトプール的に使いまわします。
  • 各種の音を設定します。

inspector

Tips

YUTOROOMで利用している他のシステムとしては以下などがあります。

(というかむしろ、これらの高い没入感を醸成する重要な要素技術が既にあるにも関わらず風呂ワールドで活用されていないことに歯がゆさを覚えてYUTOROOMが作られたという面が大きいです。これらに加えて付随する風呂体験を作り込んでさらに質を高めようとした周辺技術が本ライブラリの内容なので、とりあえず風呂ワールドを作ろうという場合にはまずは下記の適用を先に行う方が効果的だと思います。)

更新履歴

  • 1.1.0
    • FloatingObjectで等方的なオブジェクトをサポート
  • 1.0.0
    • リリース

License

Zlib License