Skip to content

Swivel Chair 2

MimyQuality edited this page Mar 24, 2024 · 9 revisions

概要

VRChatのワールドに設置できるギミック椅子です。
以下の機能を備えています。

  • 座った後の座位置調整(手動)
  • 椅子のスイベル回転
  • [Option]椅子のキャスター移動
  • [Option]ピックアップによる椅子の運搬

旧SwivelChairからの追加変更点として、

  • スマホモードに対応しました。
  • 椅子に座っている間、Sit判定や関係するピックアップ判定を無効にします。
  • キャスター移動とピックアップ運搬機能が共存可能になりました。
  • 物理演算制御でキャスター移動が可能となりました。

導入手順

Installation

パッケージ内容

  • スイベルチェアー2ギミック
  • 各種設定済みサンプルプレハブ

使い方

Packages > Fukuro Udon > Samples > SwivelChair2 にサンプルプレハブが入っています。 サンプルプレハブをHierarchyに置いたら、仮メッシュをEditorOnlyにするか1回だけUnpackして削除し、本命の椅子メッシュを入れて、設置位置やコライダーの大きさ等を調整してお使いください。
Seatオブジェクトの子に入れると、椅子の横回転時に一緒に回転します。
SwivelChair2オブジェクトの直下に入れると、椅子の横回転ギミックの影響を受けません。

操作方法 (VRモード)

ジャンプボタン長押しで椅子から降りる
ジャンプボタンを押す度に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 の時、バーチャルスティック上下でキャスター前後移動、左右で椅子ごと左右回転

高度な使い方

Swivel Chair 2の各コンポーネントのパラメーターについて

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