Grab SlideDoor - mimyquality/FukuroUdon GitHub Wiki
概要
VRChatのワールドに設置できるドアギミックです。スライドドアとスイングドアの2種用意しております。
取手を掴んで開閉操作させる事ができます。
開閉状態は同期する他、開ききった/閉じきった際に追加で、登録したオブジェクトのアクティブかOcclusionPortalコンポーネントの Open
を切り替える機能もあります。
[!IMPORTANT] モデルは別途ご用意ください。
導入手順
パッケージ内容
- スライドドアギミックとそのサンプル
- スイングドアギミックとそのサンプル
使い方
Packages > Fukuro Udon > Samples > GrabSlideDoor にサンプルプレハブが入っています。
サンプルプレハブをHierarchyに置いたら1回Unpackして、 MoveDoor の中にある仮メッシュオブジェクト(MoveModel)を消して、ご自身のドアのモデルに差し替えてください。
StaticModel オブジェクトは子にドア枠などを入れる想定ですが、不要であれば丸ごと削除してください。
PickupHandle の子にはメッシュオブジェクトは入れずに、コライダーだけ取っ手にしたい位置・サイズに調整してください。位置は Transform で、大きさは Collider の Size で調整することをお勧めします。
ドアの開閉状態を同期させたくない場合は、このオブジェクトに付いている VRC Object Sync
を Remove (削除)してください。
スライドドアは MoveDoor オブジェクトに付いている Limited Position Constraint
コンポーネントの、スイングドアは Limited LookAt Constraint
コンポーネントの各パラメーターを調整する事で可動範囲を制限できます。
Limited Position Constraint
- Enable X / Y / Z : チェックを入れた軸の方向にのみ移動します。(グローバル空間)
- X Min / Max : X軸方向の可動範囲を制限します(ローカル空間)
- Y Min / Max : Y軸方向の可動範囲を制限します(ローカル空間)
- Z Min / Max : Z軸方向の可動範囲を制限します(ローカル空間)
- Activate When Reach *** : このオブジェクトが *** の制限位置まで到達した時に、この配列に登録されたオブジェクトをアクティブにします。
Occlusion Portal
コンポーネントがある場合はアクティブにする代わりに Open プロパティを有効にします。 - Inactivate When Reach *** : このオブジェクトが *** の制限位置まで到達した時に、この配列に登録されたオブジェクトを非アクティブにします。
Occlusion Portal
コンポーネントがある場合はアクティブにする代わりに Open プロパティを無効にします。
Limited LookAt Constraint
- Enable Pitch : デフォルトではYaw軸のみ回転するようになっており、このチェックを入れるとPitch軸にも回転するようになります。
- Yaw Right / Left : 初期の向きを基準に、Yaw軸の回転角を制限します。単位は度(°)です。
- Pitch Down / Up : 初期の向きを基準に、Pitch軸の回転角を制限します。単位は度(°)です。
- Activate When Reach *** : このオブジェクトが***の制限角度まで到達した時に、この配列に登録されたオブジェクトをアクティブにします。
Occlusion Portal
コンポーネントがある場合はアクティブにする代わりに Open プロパティを有効にします。 - Inactivate When Reach *** : このオブジェクトが***の制限角度まで到達した時に、この配列に登録されたオブジェクトを非アクティブにします。
Occlusion Portal
コンポーネントがある場合はアクティブにする代わりに Open プロパティを無効にします。
高度な使い方
Limited Position Constraint
は Position Constraint
に追従範囲の制限機能が増えたようなスクリプトで、
Limited Look Constraint
は LookAt Constraint
に追従角度の制限機能が増えたようなスクリプトになっています。
この追従対象に、手を離す(Drop する)と所定の位置に戻ってくるピックアップオブジェクト(PickupHandle)を指定する事で、掴めるドアギミックを実現しています。
つまり、 Limited Position Constraint
/ Limited Look Constraint
それぞれを、単体の範囲制限付きコンストレイントのように使う事ができます。
サンプル
以下のワールドにサンプルを設置しています。
https://vrchat.com/home/world/wrld_4b7ed36e-c436-409f-9f87-8a6f4c80e79b