VRCStationに対して、座っている座っていないという状態を保持する機能をもたせようとしたその2

概要

以前に以下の記事を書いたが、これだけだと、少し機能的に足りていない状態だという事がわかったので、それの補足レベルのミニな記事です。

herie270714.hatenablog.com

結論だけ言ってしまうと、上記の記事だけだと、状態保持しようとしているクラスを介さずにVRCStationを利用できてしまって、状態が持てない状態になってしまっていたというものです。 今回は、それらの回避方法の内容です。

開発環境

今回の検証では、以下の環境を使用しています。 Unity2019.4.29f1 VRCSDK 2021.08.11.15.16 UdonSharp v0.20.2

なぜ介さずにVRCStationが利用できてしまうか?

これは単純な話で、VRCStation側で、BoxColiderがVRChatの実行環境において、BoxColiderが自動生成されてしまうからです。 また、このBoxColiderに恐らくIntractの機能が動いており、Intractする事でVRCStationを直接利用する形になってしまい、状態保持するクラスを介さない状態になってしまう。

対策

これも単純な話で、状態保持するクラス側で、VRCStationのGameObjectの参照を持っておき、そこからGetComponentでBoxColiderを取得して、enable = falseするだけ。