Skip to content

Grab SlideDoor

Mimy Quality edited this page May 18, 2024 · 20 revisions

概要

VRChatのワールドに設置できるドアギミックです。スライドドアとスイングドアの2種用意しております。
取手を掴んで開閉操作させる事ができます。
開閉状態は同期する他、開ききった/閉じきった際に追加で、登録したオブジェクトのアクティブかOcclusionPortalコンポーネントの Open を切り替える機能もあります。

Important

モデルは別途ご用意ください。

導入手順

Installation

パッケージ内容

  • スライドドアギミックとそのサンプル
  • スイングドアギミックとそのサンプル

使い方

Packages > Fukuro Udon > Samples > GrabSlideDoor にサンプルプレハブが入っています。
サンプルプレハブをHierarchyに置いたら1回Unpackして、 MoveDoor の中にある仮メッシュオブジェクト(MoveModel)を消して、ご自身のドアのモデルに差し替えてください。
StaticModel オブジェクトは子にドア枠などを入れる想定ですが、不要であれば丸ごと削除してください。

image

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 Look 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 ConstraintPosition Constraint に追従範囲の制限機能が増えたようなスクリプトで、
Limited Look ConstraintLookAt Constraint に追従角度の制限機能が増えたようなスクリプトになっています。
この追従対象に、手を離す(Dropする)と所定の位置に戻ってくるピックアップオブジェクト( PickupHandle )を指定する事で、掴めるドアギミックを実現しています。
つまり、 Limited Position Constraint / Limited Look Constraint それぞれを、単体の範囲制限付きコンストレイントのように使う事ができます。

サンプル

以下のワールドにサンプルを設置しています。
https://vrchat.com/home/world/wrld_4b7ed36e-c436-409f-9f87-8a6f4c80e79b