-
Notifications
You must be signed in to change notification settings - Fork 4
Swivel Chair 2
VRChatのワールドに設置できるギミック椅子です。
以下の機能を備えています。
- 座った後の座位置調整(手動)
- 椅子のスイベル回転
- [Option]椅子のキャスター移動
- [Option]ピックアップによる椅子の運搬
旧SwivelChairからの追加変更点として、
- スマホモードに対応しました。
- 椅子に座っている間、Sit判定や関係するピックアップ判定を無効にします。
- キャスター移動とピックアップ運搬機能が共存可能になりました。
- 物理演算制御でキャスター移動が可能となりました。
- スイベルチェアー2ギミック
- 各種設定済みサンプルプレハブ
Packages > Fukuro Udon > Samples > SwivelChair2 にサンプルのPrefab各種が入っています。
PrefabをHierarchyに置けば、椅子ギミックとして動きます。
サンプルプレハブには基本機能のみのものや、ピックアップして移動させられるもの、キャスター移動機能が設定済みのものなどバリエーションを用意してあります。必要に応じてチョイスしてください。
そのままだと仮メッシュオブジェクトのままで見栄えが悪いので、仮メッシュオブジェクトは削除し、本命の椅子メッシュオブジェクトを入れて、設置位置やコライダーの大きさ等を調整してお使いください。
Tip
Seatオブジェクトの子に入れると、椅子の横回転時に一緒に回転します。
※ SwivelChair2オブジェクトの直下に入れると、椅子の横回転ギミックの影響を受けません。
ジャンプボタン長押しで椅子から降りる
ジャンプボタンを押す度にInput Mode切り替え
Input Mode : Vertical の時、左サムスティック上下で座高調整、左右で横に座位置調整、右サムスティック左右でスイベル回転
Input Mode : Horizontal の時、左サムスティック上下で座深調整、左右で横に座位置調整
Input Mode : CasterMove の時、左サムスティック上下左右でキャスター水平移動、右サムスティック左右で椅子ごと左右回転
ジャンプボタン長押しで椅子から降りる
ジャンプボタンを押す度にInput Mode切り替え
Input Mode : Vertical の時、W Sキー上下で座高調整、A Dキーでスイベル回転
Input Mode : Horizontal の時、W Sキーで座深調整、A Dキーで横に座位置調整
Input Mode : CasterMove の時、W Sキーでキャスター前後移動、A Dキーで椅子ごと左右回転
ジャンプボタンをダブルタップで椅子から降りる
ジャンプボタンを押す度にInput Mode切り替え
Input Mode : Vertical の時、バーチャルスティック上下で座高調整、左右でスイベル回転
Input Mode : Horizontal の時、バーチャルスティック上下で座深調整、左右で横に座位置調整
Input Mode : CasterMove の時、バーチャルスティック上下でキャスター前後移動、左右で椅子ごと左右回転
VRChat の Persistence 機能に対応した、 AdjustmentSync プレハブを追加しました。
Packages > Fukuro Udon > Runtime > SwivelChair2 > Prefabs に入っています。
このプレハブを Swivel Chair 2
コンポーネントの付いたオブジェクトの子に入れることで、そのスイベルチェアー2で調節した座位置が、インスタンスを跨いで保存されるようになります。
更に、 Enable Link にチェックを入れて Link Number を合わせたスイベルチェアー2同士は、調節した座位置が共有されるようになります。
例えば形が同じ複数ある椅子が一括で調整されるので、プレイヤーが椅子毎に座位置の調整をしなくて良くなります。
Note
通信量節約のため、座位置は椅子から降りた時に保存・共有されます。
Swivel Chair 2
(Additional Settings)
- Pickup : 持ち運べる椅子にする時、ここに
VRC Pickup
コンポーネントをセットしておくことで、椅子に座った人が座っている間ピックアップ不可になります。誤操作防止用。 - Caster : キャスター移動機能を使う際は、ここに
SC2 Caster
コンポーネントをセットしてください。
SC2 Seat Adjuster
- Adjust Min Limit : 座位置調整範囲の下限側。(単位:ローカル座標)
- Adjust Max Limit : 座位置調整範囲の上限側。(単位:ローカル座標)
- Adjust Speed : 位置調整時の移動速度です。(単位:m/s)
- Forward Snap Threthold : 椅子のスイベル回転量がこの閾値以内の場合、強制的に真正面を向きます。(単位:度)
- Rotate Speed : スイベル回転時の回転速度です。(単位:度/s)
SC2 Input Manager
- Tooltip Animator : 入力イベントをTriggerパラメーターとして渡すAnimatorをセットします。一応無くても動きます。
- LongPushDuration : 椅子から降りるためのジャンプボタンの長押し判定時間。(単位:秒)
- DoubleTapDuration : 椅子から降りるためのダブルタップ受付時間。スマホモード専用。(単位:秒)
SC2 Caster
- Immobile : これが有効になっている間、キャスター移動をしなくなります。
- Move Speed : キャスター移動時の移動速度です。(単位:m/s) 物理演算制御時は力になります。(単位:N)
- Turn Speed : キャスター移動時の回転速度です。(単位:度/s) 物理演算制御時はトルクになります。(単位:Nm)
SC2 Caster
と共にIs Kinematicがオフの Rigidbody
が付いている場合、キャスター移動が物理演算制御になります。
物理演算制御には、Unityの物理演算関連のコンポーネントに対する各種知識が必要になってきます。例えば、壁や床と接触するにはコライダーが必須です。
SwivelChair2withPhysicsCaster_sampleプレハブでは、接地面との摩擦係数を減らすため、 Caster
コライダーにはPhysicMaterialを付けています。 また、Unity 2019のうちは重心(Center of Mass)が手動設定できないため、UIレイヤー(どのレイヤーともコリジョンしない)に属したBalancerコライダーを追加する事で、低重心になるよう調節してあります。
以下のワールドにサンプルを設置しています。
https://vrchat.com/home/world/wrld_4b7ed36e-c436-409f-9f87-8a6f4c80e79b