VRChatで自動ドアを作ってみる
今回は調べたら意外とヒットしなかったのでノンコーディングでVRChat内に近づくと自動で左右に開く自動ドアを作ってみたいと思います。
まずVRChatSDKをインポートしたUnityを用意します。(多くの方が開設されているので割愛)
適度な大きさのPlaneの上に図のようなCubeを2個用意し、transform.positionなどを調整します。このとき2枚のぶつかる座標(おそらくxかz)が0になるようにしておくと後で楽です。
ここではCubeにそれぞれdoor_R、door_Lと名付けました。 Create Emptyで空のオブジェクトを作ったらその中にdoor_R、door_Lを移動しましょう。空のオブジェクトにはdoorと名付けました。
ここに、Box ColliderをAdd Componentします。Box ColliderのIs Triggerにチェックを入れて、サイズを調整しましょう。ここでのColliderの範囲が自動ドアが反応する範囲になります。
調整が終わったら次にドアの開閉アニメーションを作ります。Animationウィンドウを開き、doorのアニメーションをcreate New Clipします。
いい感じのアニメを作ります。作るのは分かりやすくするために「開くアニメーション」、「閉じるアニメーション」、「閉じっぱなし」、「開きっぱなし」の4つです。今回はそれぞれ「opening」「closing」「close」「open」と名付けました
アニメーションができたらAnimatorウィンドウで次のように設定します。 またParametersにBoolean型を1つ作っておきます。closeからopeningへのTransitionsのConditionsに作ったBoolean型のtrueを、openからclosingへのTransitionsのConditionsに作ったBoolean型のfalseを設定します。
これで、Boolean型を操作することでドアの開閉ができるようになりました。
最後にTrigger判定を設定します。VRChatには多くのTriggerアクションが用意されているため、今回はこれを使用します。
Box Colliderを設定したdoorにVRC_TriggerをAdd Componentします。VRC_Trigger内のCustomと書いてあるプルダウンメニュー内からOnEnterTriggerを選択し、Addボタンを押します。その後Actionsにある+ボタンを押しBasic Events→AnimationBoolを選択します。選択するとActions内にAnimationBoolが表示されるのでクリックして設定します。
AnimationBool内の設定はReceiversにdoorのAnimatorを設定し、Variableには先ほどAnimatorウィンドウで作成したBoolean型の名前を入力し、OperationはTrueを選択します。
これでTrigger内に入るとドアが開くアニメーションが再生されるようになりました。 次にドアを閉じるアニメーションを付けます。
先ほどと同様にVRC_Trigger内のCustomと書いてあるプルダウンメニュー内から今度はOnExitTriggerを選択しAddボタンを押します。あとはドアを開く設定と同じ内容を設定し、最後のOperationをfalseにすることでドアの閉まるアニメーションが再生されます。
あとは、従来の自作ワールドと同じようにワールドをVRChatにアップロードしてみましょう。自動ドアが動いているはずです。
今回はノンコーディングで簡単にやってみました。もっと簡単な方法もある気がしますが… Trigger周りの説明は公式のドキュメントに詳しく載っているので一度読んでみることをお勧めします。思ったよりも色々なことができそうです。
VRChat Documentation Triggers (英語) https://docs.vrchat.com/docs/trigger-triggers