スタジオとスタジオを行き来するシステムで、ブロックとブロックをテレポートするのとは全く違う。
ゲームを拡張していくとゲームが重くなってしまうので、スタジオを分けてゲームを分散しよう。
ModuleScriptはReplicatedStorageの中に、
Scriptはテレポートさせたいブロックなどにつけよう。

またテレポート先のスタジオは必ずテレポート元の中に入れる必要がある。
詳しくは動画を参考にしよう。


このをModuleScriptをReplicatedStorageに入れる

ModuleScript

local TeleportService = game:GetService("TeleportService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local TeleportModule = {}

local RETRY_DELAY = 2
local MAX_WAIT = 10

-- Create remote event instance
local teleportEvent = Instance.new("RemoteEvent")
teleportEvent.Name = "TeleportEvent"
teleportEvent.Parent = ReplicatedStorage

function TeleportModule.teleportWithRetry(targetPlaceID, playersTable, teleportOptions)
	local currentWait = 0

	-- Show custom teleport screen to valid players if client event is connected
	teleportEvent:FireAllClients(playersTable, true)

	local function doTeleport(players, options)
		if currentWait < MAX_WAIT then
			local success, errorMessage = pcall(function()
				return TeleportService:TeleportAsync(targetPlaceID, players, options)
			end)
			if not success then
				warn(errorMessage)
				-- Retry teleport after defined delay
				wait(RETRY_DELAY)
				currentWait = currentWait + RETRY_DELAY
				doTeleport(players, teleportOptions)
			end
		else
			-- On failure, hide custom teleport screen for remaining valid players
			teleportEvent:FireAllClients(players, false)
			return true
		end
	end

	TeleportService.TeleportInitFailed:Connect(function(player, teleportResult, errorMessage)
		if teleportResult ~= Enum.TeleportResult.Success then
			warn(errorMessage)
			-- Retry teleport after defined delay
			wait(RETRY_DELAY)
			currentWait = currentWait + RETRY_DELAY
			doTeleport({player}, teleportOptions)
		end
	end)

	-- Fire initial teleport
	doTeleport(playersTable, teleportOptions)
end

return TeleportModule

このオブジェクトをワークスペースに入れる

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local teleportPart = script.Parent
local targetPlaceID = 0000000000(ここにテレポートしたいゲームIDを入れる)

-- Require teleport module
local TeleportModule = require(ReplicatedStorage:WaitForChild("TeleportModule"))

local function onPartTouch(otherPart)
	-- Get player from character
	local player = Players:GetPlayerFromCharacter(otherPart.Parent)

	if player and not player:GetAttribute("Teleporting") then
		player:SetAttribute("Teleporting", true)

		-- Teleport the player
		local teleportResult = TeleportModule.teleportWithRetry(targetPlaceID, {player})

		player:SetAttribute("Teleporting", nil)
	end
end

teleportPart.Touched:Connect(onPartTouch)
【ROBLOXスタジオ】ゲームからゲームへワープするゲーム間テレポート/やり方とその本質

あわせて読みたい

はじめての方に

はじめてのロブロックススタジオ

覚えておきたい用語/ロブロックススタジオを始めるにあたり

画面表示/GUIとは!?

ジャンル別で見てみる

アイテムオブジェクトを見る

スクリプトオブジェクトなどシステム類を見る

おすすめのプラグインを見る

おすすめのGUI(画面表示)を見る

基本設定や操作の項目を見る

ジャンルを垣根を越えた人気のオブジェクトを見る

ロブロックススタジオ<ROBLOX STUIDO>のダウンロードはこちら