未分類

Robloxでテレポート

Robloxのワールドは広いので、ワールド内をテレポートできれば便利です。

Robloxでテレポートするブロックを作る方法が紹介されていたので実装してみました。

実装の詳細は上記サイトをご参照ください。

 

 

テレポート地点

下図のTeleport1AとTeleport1B間をテレポートします。

  • アバターがTeleport1Aに触れると、Teleport1Bに瞬間移動する
  • アバターがTeleport1Bに触れると、Teleport1Aに瞬間移動する

 

Teleport1A-Teleport1B
Teleport1A-Teleport1B:画像クリックで拡大表示

 

 

テレポートフォルダ

Robloxのエクスプローラで「Teleport」フォルダを作ります。

その中に、ブロック(Teleport1A, Teleport1B)とスクリプト(TeleportScript)を作ります。

Teleport Folder
Teleport Folder

 

ブロック

Teleport1A

  • BrickColor:Lime green
  • Name:Teleport1A
  • Parent:Teleport
  • Size:11, 13, 1
  • CFrame:
    • Position:-253.5, 584, 33
    • Orientation:0, 0, 0

Teleport1B

  • BrickColor:Lime green
  • Name:Teleport1B
  • Parent:Teleport
  • Size:12, 1, 13
  • CFrame:
    • Position:-65, 578, -120
    • Orientation:0, 0, 0

 

 

スクリプト

TeleportScript


local Teleport1A = script.Parent.Teleport1A
local Teleport1B = script.Parent.Teleport1B

-- A -> B へテレポート
local function TeleportA2B(part)
	local humanoid = part.Parent:FindFirstChild("HumanoidRootPart")
	if humanoid then
		-- アバターの位置をテレポートブロックBにする
		humanoid.CFrame = Teleport1B.CFrame + Vector3.new(-10,0,0)
	end
end

-- B -> A へテレポート
local function TeleportB2A(part)
	local humanoid = part.Parent:FindFirstChild("HumanoidRootPart")
	if humanoid then
		-- アバターの位置をテレポートブロックAにする
		humanoid.CFrame = Teleport1A.CFrame + Vector3.new(0,0,10)
	end
end

Teleport1A.Touched:Connect(TeleportA2B)
Teleport1B.Touched:Connect(TeleportB2A)

テレポートの注意点

テレポートする際、テレポート先をブロックの位置にするとテレポートが止まらなくなります。

  • humanoid.CFrame = Teleport1B.CFrame
  • humanoid.CFrame = Teleport1A.CFrame

そのため、テレポート先はブロックから少し離れた位置にします。

  • humanoid.CFrame = Teleport1B.CFrame + Vector3.new(-10, 0, 0)
  • humanoid.CFrame = Teleport1A.CFrame + Vector3.new(0, 0, 10)

 

 

テレポートアセット

テレポートは自作しなくても、アセットで多数公開されています。

ツールボックスから「teleport」で検索して選びます。

Teleport assets
Teleport assets

 

 

参考

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です