Skip to content

Swivel Chair 2

Mimy Quality edited this page Nov 22, 2024 · 13 revisions

概要

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

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

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

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

導入手順

Installation

パッケージ内容

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

使い方

Packages > Fukuro Udon > Samples > SwivelChair2 にサンプルのPrefab各種が入っています。
PrefabをHierarchyに置けば、椅子ギミックとして動きます。
サンプルプレハブには基本機能のみのものや、ピックアップして移動させられるもの、キャスター移動機能が設定済みのものなどバリエーションを用意してあります。必要に応じてチョイスしてください。

そのままだと仮メッシュオブジェクトのままで見栄えが悪いので、仮メッシュオブジェクトは削除し、本命の椅子メッシュオブジェクトを入れて、設置位置やコライダーの大きさ等を調整してお使いください。

image

Tip

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 の時、バーチャルスティック上下でキャスター前後移動、左右で椅子ごと左右回転

座位置保存機能 (ver3.0.0 以降)

VRChat の Persistence 機能に対応した、 AdjustmentSync プレハブを追加しました。
Packages > Fukuro Udon > Runtime > SwivelChair2 > Prefabs に入っています。

このプレハブを Swivel Chair 2 コンポーネントの付いたオブジェクトの子に入れることで、そのスイベルチェアー2で調節した座位置が、インスタンスを跨いで保存されるようになります。

image

更に、 Enable Link にチェックを入れて Link Number を合わせたスイベルチェアー2同士は、調節した座位置が共有されるようになります。
例えば形が同じ複数ある椅子が一括で調整されるので、プレイヤーが椅子毎に座位置の調整をしなくて良くなります。

image

Note

通信量節約のため、座位置は椅子から降りた時に保存・共有されます。

高度な使い方

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