VRC Station
オブジェクトとインタラクトすることで、ユーザーが座れるようになります。SDK内の VRCChair3 に例があります。
このコンポーネントはアバターにも使用でき、アバター上に座席を作成できます!
パラメータとオプション
| パラメータ | 説明 |
|---|---|
| プレイヤーの移動 | プレイヤーが移動可能かどうか。選択肢は以下の通りです: |
| - Mobile: ステーションに座っている間、ユーザーの移動を許可します。 | |
| - Immobilize: ユーザーの移動を禁止し、「Station Enter Location」へ移動させます。 | |
| - Immobilize For Vehicle: Immobilizeと同様ですが、移動するステーション向けに最適化されています。 | |
| ステーションからのステーション使用(Can Use Station From Station) | ステーションに座っている間、他のステーションへ移動できるかどうかを設定します。 |
| アニメーションコントローラー (オプション) | 標準の着席アニメーションをカスタムアニメーションで上書きするために使用します。 |
| ステーションからの退出を無効化 | ユーザーが通常の方法でステーションから出られないようにする場合、トリガーを使用してユーザーを降ろしてください。 |
Seated | プレイヤーがステーション使用時にアバターを座らせるか立たせるか。これはアバターのプレイアブルレイヤーの「Seated」パラメータに影響します。 |
| ステーション着席時のプレイヤー位置 | 座った際にユーザーが移動させられる場所を定義するトランスフォーム。 |
| ステーション退席時のプレイヤー位置 | ユーザーが退席した際に移動させられる場所を定義するトランスフォーム。 |
| 制御対象オブジェクト | これは、乗り物のようにオブジェクトを操作できるステーションに使用されます。 |
Udonでステーションを作成する
独自のUdonスクリプトでステーションを使用することができます。座るための椅子を作るのは非常に簡単です。VRCSDKに含まれている VRCChair3 プレハブが、その設定方法を示しています。
椅子に必要なのは、以下のコンポーネントを持つGameObjectだけです。
VRC_Station:エントリーポイントとエグジットポイントが自分自身、またはプレイヤーがステーションに固定される位置を指定する別のTransformに設定されている必要があります。- コライダー:「Is Trigger」が有効になっているものを使用するのが一般的です。
- UdonBehaviour:ステーションへの着席を処理するUdonプログラムを持つもの。
- (オプション)椅子のような見た目のメッシュ。
VRChat SDKには、手順3を処理する StationGraph というプログラムが付属しています。
- Udon Graph
UdonSharp

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」イベントは、どのプレイヤーが乗り物に乗ったか、あるいは降りたかを検知するなど、高度な用途で非常に役立ちます。
ワールドで使用されるステーション
Animatorはアバターのパラメータにアクセスすることで、ステーションに入ったアバターに対して反応させることができます。
InStationパラメータを使用すると、アバターがステーションに入ったかどうかを検知できますが、Seated-IKが有効になっていない可能性があります。Seatedパラメータを使用すると、ステーション内のアバターでSeated-IKが有効になっているかどうかを検知できます。Seatedパラメータは、ステーションのSeatedプロパティが有効になっている場合にのみ使用されます。
SDK2アバターの検知
ステーションは、非常に古いバージョンのVRChat SDK(SDK2)でアップロードされたアバターに対しては、挙動がわずかに異なります。
SDK2のアバターを検知するには、AvatarVersionパラメータを確認してください。例:
AvatarVersionが3の場合、そのアバターは最新のSDK3を使用しています。AvatarVersionが3未満の場合、そのアバターは旧式のSDK2を使用しています。
AvatarVersion および InStation を使用して、異なるカスタム着席アニメーションへ遷移させます。それぞれの違いについては以下を参照してください。
SDK2アバター
SDK2アバターがあなたのステーションを使用する場合、Animatorは固定の着席ポーズを適用する(Seatedが有効な場合)か、あるいは Seated が無効な場合には全身のアニメーションを適用する必要があります。
SDK3アバター
SDK3アバターがあなたのステーションを使用する場合、AnimatorはSDK3アバターで使用可能なアニメーション、Tracking Controlの変更、Pose Spaceの変更を自由に組み合わせて実行できます。ただし、SDK2のステーションで発生するような、裏側での State Behaviors の適用は行われません。
SDK3アバターでは、どのようなTracking Controlを適用するかは制作者が決定するため、ステーションの Seated プロパティが必ずしもトラッキングタイプを示すとは限らないことに注意してください。
例として提供されているSeatedコントローラーは、この分岐挙動と、着席アニメーションを適用するための適切な遷移および State Behaviors の設定を示しています。
ステーションは、アバターに既に存在するパラメータにのみ影響を与えることができます。State Behaviors を使用して新しいパラメータを作成することはできません。
アバターで使用されるステーション
SDKに含まれるデフォルトの VRCChair プレハブは、アバターに使用して他のプレイヤーを「座らせる」ことができます。これを利用して、アバターを車にしたり、動き回る食卓にしたりと、様々なことが可能です!アバターには最大6つまでステーションを設置できます。
アバター上のステーションをアニメーションでオン・オフしたい場合は、特定のオブジェクトとコンポーネントを切り替える必要があります。

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