VRC Station
オブジェクトをインタラクトしてユーザーが座れるようにします。例として、SDK内に VRCChair3 が用意されています。
このコンポーネントはアバターに使用して、アバター上に座席を作成することもできます!
パラメータとオプション
| パラメータ | 説明 |
|---|---|
| Player Mobility | プレイヤーの移動可否を設定します。以下のオプションがあります: |
| - Mobile: ステーション着席中も移動を許可します。 | |
| - Immobilize: ユーザーの移動を禁止します。 | |
| - Immobilize For Vehicle: Immobilizeと同様ですが、移動するステーション向けに最適化されています。 | |
| Can Use Station From Station | ステーション着席中に別のステーションへ乗り換え可能にするかどうかを設定します。 |
| Animation Controller (optional) | 通常の着席アニメーションをカスタムアニメーションで上書きするために使用します。 |
| Disable Station Exit | 通常の方法でステーションから降りられないようにする場合に有効にします。トリガーを使用してユーザーを降ろすようにしてください。 |
| Seated | このステーションでユーザーが着席状態になるべきかどうかを設定します。これによる影響の詳細は上述の内容を参照してください。 |
| Station Enter Player Location | 着席時にユーザーが移動する位置を定義する Transform です。 |
| Station Exit Player Location | 降席時にユーザーが移動する位置を定義する Transform です。 |
| Controls Object | 乗り物など、オブジェクトを操作できるステーションで使用します。 |
Udonを使ったステーションの作成
独自のUdonスクリプトでステーションを使用できます。座るための椅子を作るのは非常に簡単です。VRCSDKに含まれる VRCChair3 プレハブが、その設定方法を示しています。
椅子に必要なのは、以下のコンポーネントを持つGameObjectだけです。
VRC_Station。プレイヤーがステーションに固定される位置を指定するために、エントリーポイントとエグジットポイントを自身、または別のTransformに設定します。- コライダー(通常は "Is Trigger" を有効にします)。
- ステーションへの着席を処理するUdonプログラムをアタッチしたUdonBehaviour。
- (オプション)椅子のように見えるメッシュ。
VRChat SDKには、手順3を処理する StationGraph というプログラムが付属しています。

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
public class StationGraph : UdonSharpBehaviour
{
public override void Interact()
{
Networking.LocalPlayer.UseAttachedStation();
}
public override void OnStationEntered(VRCPlayerApi player)
{
Debug.Log($"{player.displayName} Entered");
}
public override void OnStationExited(VRCPlayerApi player)
{
Debug.Log($"{player.displayName} Exited");
}
}
Udonの "OnStationEntered" および "OnStationExited" イベントは、どのプレイヤーが乗り物に乗り込んだか、あるいは降りたかを検知するような高度なユースケースにおいて非常に役立ちます。
ワールドで使用される Station
Animator を使用して、アバターが Station に入ったことに反応するアバターパラメータにアクセスできます。
InStationパラメータを使用して、アバターが Station に入ったかどうかを検出します(ただし、Seated-IK が有効になっていない可能性があります)。Seatedパラメータを使用して、Station 内のアバターで Seated-IK が有効かどうかを検出します。Seatedパラメータは、Station のSeatedプロパティが有効になっている場合にのみ使用されます。
SDK2 アバターの検出
Station は、非常に古いバージョンの VRChat SDK (SDK2) でアップロードされたアバターに対しては少し異なる挙動をします。
AvatarVersion パラメータを確認して、SDK2 アバターを検出してください。例:
AvatarVersionが3である場合、そのアバターは最新の SDK3 を使用しています。AvatarVersionが3未満である場合、そのアバターは古い SDK2 を使用しています。
AvatarVersion と InStation を使用して、異なるカスタム着席アニメーションへ移行させます。これらの違いについては以下で説明します。
SDK2 アバター
SDK2 アバターがあなたの Station を使用する場合、Animator は固定の着席ポーズ(Seated が有効な場合)を適用するか、Seated が有効でない場合は全身のアニメーションを適用する必要があります。
SDK3 アバター
SDK3 アバターがあなたの Station を使用する場合、Animator は SDK3 アバターで利用可能なアニメーション、Tracking Control の変更、および Pose Space の変更を自由に組み合わせて適用できます。ただし、SDK2 の Station で発生するような裏側での State Behaviors は適用されません。
どのような Tracking Control を適用するかは制作者が決定するため、Station の Seated プロパティが必ずしも SDK3 アバターのトラッキングタイプを示すわけではないことに注意してください。
用意している Seated コントローラーの例では、この分岐動作と、着席アニメーションを適用するための適切な遷移および State Behavior の設定方法を紹介しています。
Station は、アバターに既に存在するパラメータにしか影響を与えられません。State Behaviors を使用して新しいパラメータを作成することはできません。
アバターで使用するステーション
SDKに含まれるデフォルトの VRCChair プレハブをアバターに使用することで、他のプレイヤーを自分のアバターに「座らせる」ことができます。これを利用して、自分のアバターを車にしたり、動き回る食卓にしたりと、さまざまな活用が可能です。1つのアバターにつき最大6つまでステーションを設置できます。
アニメーションでステーションの有効/無効を切り替えたい場合は、特定のオブジェクトやコンポーネントを切り替える必要があります。

(上のスクリーンショットの)赤い枠で囲まれた部分は、アップロード時に有効(Enabled)にしておく必要があります。アップロード時に無効になっていると、ステーションは機能しません!
赤い枠の切り替えを行うと、そのステーションに座っているプレイヤーを強制的に降ろすことができます。緑色の枠の切り替えは、新しいプレイヤーがステーションに座ることを防ぐのみとなります。これにはコンポーネントやオブジェクトの有効/無効の切り替えが伴うため、必ず FXレイヤーで行う必要があります。
ユーザーは セーフティ設定 を使用してアニメーションを無効化できる点に留意してください。アバターのステーションがデフォルトでオンになっている(トグルがデフォルトでオンの状態)場合、たとえ着用者がアニメーションを使用してオフにしても、ステーションはアクティブなままとなります。
アップロード時には、他にも2つの制限があります。
- エントリーポイントとエグジットポイントの距離は2メートル以内でなければなりません。
- アバターに設置できるステーションは最大6つまでです。それ以上設置した場合は無効になります。
パラメータとオプション
| パラメータ | 説明 |
|---|---|
| Player Mobility | ステーション使用中にプレイヤーの歩行を許可するかどうかを設定します。 |
| - Mobile: ステーションに着席している間、プレイヤーの移動を許可します。 | |
| - Immobilize: ユーザーの移動を禁止し、「Station Enter Location」へ移動させます。 | |
| - Immobilize For Vehicle: 「Immobilize」と同様ですが、移動するステーション向けに最適化されます。 | |
| Can Use Station From Station | ステーションに着席している状態で、別のステーションに切り替えられるかどうかを設定します。 |
| Animation Controller (optional) | アバターコントローラー内の「Sitting」プレイアブルレイヤーを上書きします。 |
| Disable Station Exit | 移動やジャンプによるステーションからの退出を禁止します。ExitStation ノードを使用して、プレイヤーをステーションから退出させてください。 |
| Seated | ステーション使用時に、プレイヤーのアバターを座らせるか立たせるかを設定します。 これは、アバターのプレイアブルレイヤーにある「Seated」パラメータに影響します。 |
| Station Enter Player Location | ステーションに入った際、プレイヤーはこのTransformの位置へ移動します。 |
| Station Exit Player Location | ステーションから出た際、プレイヤーはこのTransformの位置へ移動します。 |
制限事項
アバターがステーションに座るには、以下の要件を満たす必要があります。
- アバターには、Unity Avatar が割り当てられた Animator component が必要です。ヒューマノイドタイプのアバターであれば、通常これは自動的に割り当てられます。
- Animator component は、アバターの descriptor component と同じゲームオブジェクトに配置されている必要があります。
最終更新: