【VRChat】ポータルで他のワールドへつなぐ:玄関と廊下は別物

作成: 2026-09-09

VRC Portal Markerで他のワールドへの入口を置きます。同じワールド内の移動には使えないこと、その場合はTeleportToを使うことを、両方作りながら解説します。

自分のワールドから、友達のワールドへ直接行けるようにしたい。あるいは、シリーズものの2作目への入口を置きたい。

VRChatには ポータル という仕組みがあります。触れるとそのワールドへ移動する入口です。

ただし、同じワールドの中を移動するのには使えません。 ここを取り違えると時間を無駄にします。この記事では、2つの移動の違い と、それぞれの作り方を扱います。

部屋の奥に立つ、別のワールドへの入口

この記事でわかること

  • ポータルとテレポートの使い分け
  • VRC Portal Markerの置き方
  • ワールドIDの取り方
  • 同じワールド内を移動する方法

はじめての部屋を作る を済ませた状態から始めます。

Sponsored


ポータルは玄関、テレポートは廊下

似た「移動」でも、2つはまったく別の仕組みです。

ポータルは家の外へ、テレポートは家の中を移動する
ポータルテレポート
行き先他のワールド同じワールドの中
たとえると玄関のドア廊下
必要なものVRC Portal MarkerUdonのコード
移動のしかたワールドを読み込み直すその場で位置が変わる
他の人は一緒には来ない動くのは自分だけ

ポータルは家から出る動作です。 ワールドを読み込み直すので、いま一緒にいる人とは別れることになります。

テレポートは家の中の移動です。 一瞬で位置が変わるだけで、同じインスタンスに留まります。

作りたいものが「2階へ上がる階段の代わり」なら、ポータルではなくテレポートです。同じワールドIDを指定しても、同じ部屋の別の場所には飛べません。 別のインスタンスに入り直すことになります。

Sponsored

実践:他のワールドへの入口を置く

部屋の一角に、別のワールドへ行ける入口を作ります。

門の内側の渦へ歩み寄る

1. 行き先のワールドIDを調べる

まず、行き先のワールドIDが要ります。

VRChatのサイトでそのワールドのページを開くと、URLに wrld_ で始まる長い文字列 が入っています。

wrld_00000000-0000-0000-0000-000000000000

これがワールドIDです。自分の別のワールドを指したいなら、そのプロジェクトのシーンで VRCWorld を選び、Pipeline Manager のBlueprint IDを見れば分かります。

行き先は、他の人が入れるワールドにしてください。 非公開のままだと、来た人が弾かれます。

2. ポータルを置く

「Create Empty」で ExitPortal を作り、壁ぎわの (0, 0, 5) あたりに置きます。

「Add Component」で VRC Portal Marker を追加します。

入れるもの
Room Id調べた wrld_... の文字列
Nameポータルの上に出す名前(例:第2ワールドへ

位置は床の高さに置いてください。 ポータルは指定した位置から上に向かって立ち上がるので、空中に置くと浮いたものになります。

3. 門らしく見せる

ポータルそのものの見た目はVRChatが描くので、こちらでは変えられません。まわりを作れば、印象は変えられます。

ExitPortal の位置に合わせて、次を置きます。

名前作り方
PortalFrameCubeを3つ組み合わせて、門型のアーチにする
PortalSignWorld Space の Canvas と TextMeshPro。門の上に行き先の説明

説明を1行添えておくと親切です。 「ここから出ると、いまの部屋を離れます」と分かるだけで、うっかり入ってしまう人が減ります。

4. 確かめる

ポータルはPlayモードでは確かめられません。 実際にアップロードして、VRChatの中で見る必要があります。

アップロードして入り、次を見ます。

確認期待する結果
ポータルが立っているか門の位置に、渦のような入口が見える
名前が出ているか設定した名前が表示される
近づく行き先のワールド名とサムネイルが出る
入るそのワールドへ移動する

近づいたときに「Invalid」のような表示が出るなら、IDが間違っています。 もう一度URLからコピーし直してください。

同じワールドの中はテレポートで

2階へ上がる、隠し部屋へ入る、スタート地点に戻る。同じワールドの中の移動は、Udonで書きます。

押した人だけが、同じワールドの別の場所へ移る

使うのは TeleportTo() です。

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;

[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
public class TeleportPad : UdonSharpBehaviour
{
    [SerializeField] private Transform destination;

    public override void Interact()
    {
        VRCPlayerApi player = Networking.LocalPlayer;
        if (!Utilities.IsValid(player) || destination == null) return;

        // 押した人だけが移動する
        player.TeleportTo(destination.position, destination.rotation);

        Debug.Log("[TeleportPad] 移動しました");
    }
}

渡すのは位置と向きの2つです。 行き先に空のオブジェクトを1つ置いて、その Transform を割り当てるのがいちばん簡単です。

向きも渡せることが大事です。 移動した瞬間に壁を向いていると、来た人が一瞬混乱します。行き先の空オブジェクトを、見せたい方向へ回しておいてください。

動くのは押した人だけです。 他の人はその場に残ります。全員を移動させたいなら、Network Events で全員に実行してもらいます。

こちらは Playモードでも確かめられます。 ポータルと違って、ワールドの読み込み直しが起きないためです。

Sponsored

うまくいかないときは

  • ポータルが出ない → Playモードでは表示されません。アップロードして確かめます
  • 無効なポータルと表示される → Room IdのつづりかIDそのものが違います。URLからコピーし直します
  • 入ったのに弾かれる → 行き先が非公開です。誰でも入れる状態か確認します
  • ポータルが空中に浮いている → 置いた位置が高すぎます。床の高さに合わせます
  • テレポートで壁を向く → 行き先のオブジェクトの回転を直します
  • テレポートしても動かない → Destinationが None か、Colliderがなくて押せていません

おまけ:先に知っておくと良いこと

  • 入口の近くに置かない: スポーン地点のすぐ横にポータルがあると、入ってきた人がうっかり出ていきます。奥まった場所か、意図がはっきり伝わる場所に置いてください
  • 出ることを伝える: 「別のワールドへ移動します」と1行書いてあるだけで、事故が減ります
  • 自分のワールドをつなぐと回遊してもらえる: シリーズものを作っているなら、互いにポータルを置くと行き来してもらえます
  • テレポートは演出と組める: 移動の前に画面を暗くする、音を鳴らす。一瞬で切り替わるより自然になります
  • 使いどころはいろいろ: 姉妹ワールドへの入口、イベント会場から控室への移動、脱出ゲームの次のステージ、長い階段の代わり

まとめ

移動には2種類あって、道具が違います。

  • ポータルは他のワールドへの玄関。VRC Portal Marker に wrld_ のIDを入れる
  • 同じワールドの中はテレポート。Udonの TeleportTo() を使う
  • ポータルはアップロードしないと確かめられない
  • テレポートは押した人だけが動く

置く前の問いかけは、「これは家から出る移動か、家の中の移動か」 です。ここで使う道具が決まります。

落ちたときに戻す仕掛けなら 落下したら復帰させる、全員をそろえて動かすなら Network Events へ進んでください。

VRChat このセクションのノート63