ばーちゃるなれっじ Unityのエラー、アバター改変、イベントを検索 アプリで開く
‹ 戻る#ワールド

ピックアップとインタラクトの作り方

ワールドに「持てるもの」「押せるもの」があるだけで、遊びに来た人の体験は大きく変わります。この記事では、基本となるピックアップとインタラクトの作り方を、必要なコンポーネント・設定項目・同期の考え方・つまずきどころつきで紹介します。設定項目は VRChat Creators Docs「VRC Pickup」(2026年6月23日更新)「VRC Object Sync」(2025年3月7日更新)「Network Details」(2025年8月8日更新)「Ownership」(2025年4月28日更新)を元にしています(2026年9月17日確認)。

ピックアップとインタラクトの作り方の本文画像

持てるもの(Pickup)

オブジェクトにコライダー、Rigidbody、そしてVRChat SDKの VRC Pickup コンポーネントを付けると、掴んで持ち運べるようになります。この3点セットが基本で、Rigidbody と Collider は同じオブジェクトに付いていることが前提です。

ペン、コップ、ぬいぐるみなど、置いてあるだけで人が触って遊び始めるのがVRChatの面白いところです。凝ったギミックより、こうした小物のほうが滞在時間を伸ばすことも珍しくありません。

作り方の手順

1. 持たせたいオブジェクトに Collider(Box や Sphere)が付いているか確認する
2. Add Component で Rigidbody を追加する(落下させたくないなら Use Gravity をオフ)
3. Add Component で VRC Pickup を追加する
4. 他の人にも位置を見せたいなら VRC Object Sync も追加する
5. Unity の再生ボタン、または Build & Test で実際に掴んでみる

ピックアップとインタラクトの作り方の本文画像

VRC Pickup の設定項目

付けただけでも動きますが、次の項目を知っておくと使い勝手が大きく変わります。

・Pickupable — 掴めるかどうか。動かされたくない小物は False にする
・Auto Hold — 掴む操作を離しても手に持ち続ける。持ったまま Use ボタンで何かする物(ペン、銃)には必須で、デスクトップで OnPickupUseDown を使うにはこれが要る
・Orientation — 持ち方。Any / Gun / Grip から選び、Gun と Grip では Exact Gun / Exact Grip に握り位置の Transform を指定する
・Proximity — 掴める最大距離(m)。小さすぎると掴めず、大きすぎると遠くから拾えてしまう
・Interaction Text — 手をかざしたとき(デスクトップでは見たとき)に出る文言。Use Text は持ったときに出る文言で、Auto Hold が必要
・Disallow Theft — 他人が持っている物を横取りできないようにする
・Allow Manipulation When Equipped — 持ったままキーボードやコントローラーで回転させられるようにする
・Throw Velocity Boost Min Speed / Scale — 一定以上の速さで投げたときの速度補正
・Outline Renderers — 手をかざしたときに光らせる Renderer の一覧

Version は 1.0 と 1.1 があり、公式は 1.1 を推奨しています。

ピックアップで確認したいこと

・床を突き抜けないか — 投げたときにコライダーの設定が合っていないとすり抜けます。薄い床は Collider を厚くします
・掴み不可にすべきものはないか — 動かされたくない家具や装飾は Pickupable を False にしておきます
・戻ってくるか — 遠くへ投げられたまま戻らないと、次の来場者が使えません。VRC Object Sync の Respawn を呼ぶボタンを置くか、一定の高さより下に落ちたら Respawn する仕組みがあると安心です
・大きさと重さ — 実際にVRで持ってみると、想像より扱いにくいことがあります

ピックアップとインタラクトの作り方の本文画像

押せるもの(Interact)

Collider と UdonBehaviour の両方が付いたオブジェクトは、近づくと操作を促す表示が出てインタラクトできるようになります。押したときに Udon の Interact イベントが走るので、そこに「ライトを切り替える」「扉を開く」「音を鳴らす」といった処理を書きます。UdonBehaviour の Interaction Text で表示文言を、Proximity で反応する距離を変えられます。

ピックアップ側にもイベントがあります。OnPickup(掴んだ)、OnDrop(離した)、OnPickupUseDown / OnPickupUseUp(持ったまま Use ボタンを押した・離した)です。「持ったペンで描く」「持った銃で撃つ」はこの組み合わせで作ります。

単純なオン・オフ程度なら、配布されている既製のスイッチギミックを流用するのが手早いです。まず動くものを置いて、中身を眺めてから自作に進むのが挫折しにくい順番です。

ピックアップとインタラクトの作り方の本文画像

同期を意識する

「自分が押した結果が他の人にも見えるか」は常に意識しましょう。VRC Pickup は VRC Object Sync を足せば位置・回転が同期されますが、Udonで作る仕掛けは同期の書き方次第で「自分にしか起きていない」状態になりがちです。

UdonBehaviour の Synchronization Method には3種類あります。

・None — 同期しない。自分だけの鏡スイッチなど、ローカル演出向け
・Continuous — 変わり続ける値を頻繁に送る。1回およそ200バイトまで。途中の値が飛んでも近似で補われる
・Manual — 値を変えたあと RequestSerialization を呼んだときだけ送る。1回およそ280KBまで。扉の開閉やスコアのように「必ず正しい値」が要るものに向く

そして同期変数はOwner(所有者)だけが書き換えられます。最初にインスタンスへ入った人が既定の所有者で、Networking.SetOwner で移せます。所有者が退出すると自動で次の人に移ります。VRC Pickup は掴んだ人に所有権が移るので、Pickup と同じオブジェクトの Udon は「掴んだ人が書く」形になります。

後から入ってきた人の見え方

特に見落としやすいのが、後から入ってきた人の見え方です。同期変数の値は新しく入った人にも届きますが、SendCustomNetworkEvent で送ったイベントは「その瞬間にいる人」にしか届かず、残りません。扉を開けた状態で誰かが参加したとき、その人の画面でも開いて見えるか。「開いている」という状態は同期変数で持ち、音や光の演出だけをイベントで送る、と分けるのが基本です。テストは2アカウントか、フレンドとの実地確認が確実です。

送りすぎに注意

Udon 全体で送れるのはおよそ11KB/秒です。超えると IsClogged 状態になり、Continuous のものはイベントが送れず、Manual のものは溜めて再送します。物が多いワールドで「たまに同期が遅れる」なら、Continuous を Manual に変えるか、同期する物の数を減らします。

つまずきやすいポイント

掴めない
コライダーが無い、または小さすぎる可能性があります。次に Pickupable が False になっていないか、Proximity が小さすぎないかを確認してください。

押しても反応しない
Collider と UdonBehaviour の両方が同じオブジェクトに付いているか、Proximity の範囲内かを確認します。Interact イベントが無いスクリプトも反応しません。

Use ボタンが効かない(デスクトップ)
OnPickupUseDown はデスクトップでは Auto Hold が必要です。

自分では動くのに他の人には見えない
同期の設定が入っていない典型例です。Pickup なら VRC Object Sync、Udon なら Synchronization Method が None のままになっていないか、Owner でない人が同期変数を書き換えようとしていないかを確認します。一人でのテストでは気づけません。

持っている物が他の人にはガクガク動いて見える
Object Sync の Force Kinematic On Remote をオンにすると、持っていない側では物理を止めて位置だけ受け取るようになり、落ち着きます。

物が散らかったまま元に戻らない
VRC Object Sync の Respawn を呼ぶリセットボタンを用意しておくと、長時間運用でも荒れません。

よくある質問

Q. プログラミングができなくても作れる?
A. 既製ギミックの導入だけなら不要です。Pickup と Object Sync を付けるだけならスクリプトも要りません。自作に進む場合も、ビジュアルスクリプティング(Udon Graph)から段階的に始められます。

Q. どのくらい置いていい?
A. 数が増えると負荷になります。特に物理演算が働く Rigidbody 付きのオブジェクトと、Continuous 同期のものは必要な数に絞りましょう。

Q. 掴んだ物が他人に奪われるのを防ぎたい
A. Disallow Theft をオンにすると、持っている間は他人が掴めなくなります。

Q. Quest対応でも同じように動く?
A. 基本の仕組みは同じですが、負荷制限が厳しいため数と重さの調整が必要になります。

Q. Udonの学び方を知りたい
A. 別記事「Udonとは何か ワールドギミックの仕組み」で、挫折しにくい学習順をまとめています。

引用記事Udonとは何か ワールドギミックの仕組みワールド

「Collider・Rigidbody・VRC Pickup の3点セット、見せたいなら Object Sync、状態は同期変数で持つ」。これだけ押さえれば、ワールドの小物づくりで迷うことはほとんどなくなります。