<VRC><Unity>自動ドア(+α)作った

現在unityにて個人ゲーム制作を細々と進めています。
制作ゲーム内でステージを用意するための調査&実験として、VRCを利用することにしました。
今回ちょっとだけ応用で
開いている途中でも離れれば閉まる、閉まっている途中でも近付けば開く
自動ドアにしてみました。
これが意外とスムーズに作成できなかったので記事に残しておきます。

自動ドア自体の作製は他に紹介している人がたくさんいるので省略(記事の破綻)
自動ドアの作成手順の概要は
ドアとするオブジェクトのコライダーのサイズを設定(センサーの役割)
→開・閉・開状態・閉状態の4種類のアニメーションの作製
→アニメーターで設定
→アニメーション起因をプレイヤーにする
→😉
といった具合でしょうか

アニメーションの途中で切り替わる自動ドアの作成

正解は一つではないのでこちらは作例の1つとしてください。
ドアの開閉の動きはアニメーションが握っています。
そしてunityの機能として1つのアニメーションを終了まで再生するHasExitTimeという項目があります。
それが今回の肝となります。
下図はトランジション(矢印)を選択したときのインスペクタです。

画像1

アニメーターウィンドウから変更していきます。

画像2

Sclose(閉状態)・open(開く)・Sopen(開状態)・close(閉じる)です。
名前が分かりにくいのはご容赦。
Sclose→open間、Sopen→close間でConditionsを設定しています。
上図はすでに普通の自動ドアから設定を変更した状態です。
変更内容は
1.openとcloseの間に相互でtransitionを追加
2.open→closeにはfalseのConditionsを設定+HasExitTimeを外す
close→openにはtrueのConditionsを設定+HasExitTimeを外す

3.Sclose→openとSopen→closeのHasExitTimeのチェックを外す
まとめると下図のようになります

画像3

ちなみにopen⇔closeの相互transitionがない状態でHasExitTimeのチェックをすべて外した場合、永遠にSclose→openが再生され続けます。
Conditionsが設定されていない+HasExitTimeが設定されていない状態だと次のアニメーションが再生されない仕様らしいです。
そのため、Entryノードに返ってくるみたいですね。知らんけど

完成

あとはワールドをアップロードして動作確認をします。
以下のようになれば完成です。いぇい!