【Roblox】ゲーム中でフレンド招待ウィンドウを表示する
はじめに
こんにちは、まつさこ です。
今回は、Robloxでゲーム中にフレンド招待ウィンドウを表示する方法について解説します。ゲーム中でフレンド招待ウィンドウを表示することで、ユーザーに簡単に友達招待を促すことができます。
作ったもの
今回、はじめてのRobloxエクスペリエンスとして、Really Fun Easy Obby という簡単なオビースタイルのゲームを作成しました。オビー(Obby)とは、障害物を避けながらゴールを目指すいわゆるアスレチックゲーム的なゲームのジャンルです。
いわゆるシンプルな虹色Obbyですが、これを作るだけでも様々な知見が得られました。今回、ゴールにアイテムショーケースを配置し、それに触れることでフレンド招待を促すようにしました。その実装方法について解説します。
オブジェクトに触れる判定を作る
まずは、ショーケースに触れたときにフレンド招待ウィンドウを表示するための判定を作ります。 GlassShowcase
オブジェクトがWorkspace内に配置されている想定で、以下のようにコードを作成します。
local Players = game:GetService("Players")
local showcase = workspace:WaitForChild("GlassShowcase")
local function onTouched(hit, collider)
local player = Players.LocalPlayer
if player.Character == hit.Parent and player.Character:WaitForChild('Humanoid') then
if collider.CanTouch then
collider.CanTouch = false
-- Player Invite のウィンドウを表示する処理
end
end
end
showcase.Touched:Connect(function(hit)
onTouched(hit, showcase)
end)
collider.CanTouch
をフラグとして利用することで、一度触れたら再度触れないようにしています。
次に、フレンド招待ウィンドウを表示する処理を実装します。
フレンド招待ウィンドウを表示する
フレンド招待ウィンドウを表示するためには、 SocialService
サービスを利用します。また、処理を行う前に、プレイヤーを招待できる状態かどうかをチェックします。以下のようにコードを修正します。
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local showcase = workspace.Goal.GoalShowcases:WaitForChild("GlassShowcase")
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local function onTouched(hit, collider)
local player = Players.LocalPlayer
if player.Character == hit.Parent and player.Character:WaitForChild('Humanoid') then
if collider.CanTouch then
collider.CanTouch = false
-- Friend inviteを送れる状態かチェック
local canInvite = canSendGameInvite(player)
if canInvite then
local success, errorMessage = pcall(function()
local ExperienceInviteOptions = Instance.new("ExperienceInviteOptions")
ExperienceInviteOptions.PromptMessage = "Invite friends and UNLOCK items!"
SocialService:PromptGameInvite(player, ExperienceInviteOptions)
end)
-- Friend inviteを送れる状態でなかったときはショーケースにまだ触れられるようにする
if not success then
warn("Error while opening game invite: " .. tostring(errorMessage))
collider.CanTouch = true
return
end
end
end
end
end
showcase.Touched:Connect(function(hit)
onTouched(hit, showcase)
end)
-- 友達招待画面を閉じた時
SocialService.GameInvitePromptClosed:Connect(function(player, recipientIds)
-- Showcaseを解除
showcase.Transparency = 1
showcase.CanCollide = false
end)
SocialService:CanSendGameInviteAsync
でプレイヤーが招待できる状態かどうかをチェックし、SocialService:PromptGameInvite
でフレンド招待ウィンドウを表示します。
また、 SocialService.GameInvitePromptClosed
イベントでウィンドウが閉じたときの処理を行っています。ウィンドウを閉じた時、ショーケースを透明にし、もう触れられないようにしています。
まとめ
この記事では、Robloxでゲーム中にフレンド招待ウィンドウを表示する方法について解説しました。適切な場面で友達招待を促すことで、エクスペリエンスを多くのユーザーに知ってもらえる機会を作れそうです!
読んでくださりありがとうございました🤗
Discussion