VRChat用乗り物床面追従システム
香川急行電鉄饂飩線ワールド的なシステムの汎用化です。 動く床面に乗ったプレイヤーが特別なアクション無しに床に追従します。
- あるオブジェクトの移動にプレイヤーを追従させるシステムです。
- 領域内から出た場合に領域内におしこめるか「下車」させるか選択可能です。
- 鉄道やバスなど乗客が移動出来る床面が存在し緩やかに発停車する乗り物に適しています。
- 追従中の移動では歩行モーション等が再生されません。この点の解決法を知っている人があればご教授下さい。
以下の前提リソースを事前にセットアップ・インポートして下さい
- VCCでのUdonSharpセットアップ
- CyanPlayerObjectPool >= 1.1.0
以下の前提リソースを事前にインポートして下さい
- あらかじめ CyanPlayerObjectPool 等依存アセットをインポートしておいて下さい。
- 乗り物のオブジェクトにUser Moving Floor Targetを付けます。
- Ride Colliders:(任意)乗り物が停止しているときに有効な床面などのコライダー。乗車中に干渉しないようOFFになります。
- Inside Collider: (必須)乗り物の内部に居る判定用コライダー。IsTriggerを有効にしてください。
- Can Get Off While Moving: (任意)乗り物が走行中にInside Collider範囲外に出たときに下車扱いにするならtrue。
- Moving: (必須)乗り物が走行中ならばtrue。スクリプト等で動的に動かす際にここを制御して下さい。
- User Moving Floor Targetと同じInsideCollider, CanGetOffWhileMoving, Moving, _OnGetOn, _OnGetOffのインターフェースを持った任意のUdonBehaviorを代わりに設定しても良いです。
- UserMovingFloor.prefabをシーンに置きます。
- PlayerObjectPoolオブジェクトが作成されるので、Pool Sizeを(ワールドの人数上限*2+2)にしてください。
- UserMovingFloorのTargetsにUser Moving Floor Targetが付いた乗り物のオブジェクトを設定します。
- InsideUserMovingFloorVRCChair.prefabを乗り物に置いて下さい。
- UserMovingFloorのInside Chairsに上記で置いた中のVRCChair3オブジェクト(InsideVRCStationCompanionが付いている)を設定して下さい。
- 既知の問題: 椅子に先に座っている人がいる場合もInteractできてしまいます。
雑に投げて下さい。反応がなければTwitterでつついて下さい。是非よりよい乗車システムを作ってゆきましょう。
Zlibライセンスなので普通に使う場合は表記も全く必要ないんですが、VRChatのワールドに使う場合は書いておくと良い乗り物ワールドが増える気がするので書いておくのオススメ。