撮影ブース

写真を撮ることは、素晴らしい体験を記念する完璧な方法です。 PhotoBooth開発者モジュールは、プレイヤーがバーチャル空間を表す背景でユニークなポーズができる使いやすい撮影ステージングツールです。

モジュールの使用法

インストール

バーチャル空間でPhotoBoothモジュールを使用する方法

  1. 表示タブから、ツールボックスを開き、マーケットプレイスタブを選択します。

    Studioのツールボックストグルボタン
  2. モデルのソートが選択されていることを確認し、カテゴリすべてのボタンを表示をクリックします。

  3. DEV モジュールタイルを見つけてクリックします。

  4. Photo Boothモジュールを見つけてクリックするか、3D ビューにドラッグアンドドロップします。

  5. エクスプローラウィンドウで、PhotoBoothモデル全体をServerScriptServiceに移動します。 バーチャル空間を実行すると、モジュールはそれ自体をさまざまなサービスに配布し、実行を開始します。

ブースの位置決め

モジュールには、3D 空間に配置できるPhotoBoothモデルが付属しています。 このモデルは、プレイヤーが写真を設定するために操作するものです。

  1. モジュールのメインフォルダのワークスペース内でPhotoBoothメッシュを見つけます。

  2. それを最上位レベルのワークスペース階層に移動し、必要な場所に配置します。

設定

モジュールは、ほとんどのユースケースで動作するように事前設定されていますが、設定機能を使用して簡単カスタマイズできます。 例えば、写真の下部にあるデフォルトメッセージを変更するには:

  1. StarterPlayerScriptsで、新しいLocalScriptを作成して、それをConfigurePhotoBoothに名前変更します。

  2. 以下のコードを新しいスクリプトに貼り付けます。

    LocalScript - ConfigurePhotoBooth

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
    PhotoBooth.configure({
    frameMessage = "First Photo Booth Capture!",
    })

イベントへの接続

Photo Booth がローカルクライアントに新しい画面を表示するたびに、対応するイベントが発生します。 これらのイベントは、独自のカスタムロジックで応答できるLocalScriptように、で接続できます。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)

GUI の可視性

デフォルトでは、フォトブースは、写真がステージングされているときに、すべてのScreenGuisCoreGuisを非表示にします。 この自動非表示動作を上書きし、どの GUI を表示のままにするかをプログラムで決定したい場合は、hideOtherGuisshowOtherGuisコールバックを含め、自分のカスタムロジックで応答します。

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Create a screen GUI that will not be hidden
local specialGuiInstance = Instance.new("ScreenGui")
-- Draw the screen GUI above the photo booth GUI
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Set attribute on screen GUI to prevent hiding
specialGuiInstance:SetAttribute("ShowInPhotoBooth", true)
-- Add text label to the GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Remains visible when taking a photo"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
PhotoBooth.hideOtherGuis(function()
-- Hide all developer-defined screen GUIs except those marked with attribute
local instances = playerGui:GetChildren()
for _, instance in pairs(instances) do
if instance:IsA("ScreenGui") and not instance:GetAttribute("ShowInPhotoBooth") and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Hide specific core GUIs
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
PhotoBooth.showOtherGuis(function()
-- Show all developer-defined screen GUIs that were hidden
for _, instance in pairs(hiddenInstances) do
instance.Enabled = true
end
hiddenInstances = {}
-- Show specific core GUIs that were hidden
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

API リファレンス

関数

設定

configure(config:table):nil

デフォルト設定オプションは、configテーブル内の以下のキー/値を使用して上書きします。 この関数は、LocalScriptからのみ呼び出すことができます。

Data

キー概要デフォルト
frameMessage写真の下部に表示されるメッセージです。 その期間は、fadeUiDelayプロパティを介して制御できます。"Use your device to take a screenshot and share!"
fadeUiDelayフェードアウトする前にフレームメッセージを表示する時間(秒単位)です。 負の数値に設定すると、フェードアウトしません。3
closeButtonImagecloseButtonBackgroundImage画像の上に配置した、閉じたフォトボタンに使用する画像です。"rbxassetid://7027440823"
closeButtonBackgroundImage閉じたフォトボタンに使用する背景画像です。"rbxassetid://7027440891"
cameraLandscapePositionランドスケープモードで写真を撮った場合、フォトブースのカメラ、キャラクターから前方と上方までの距離です(Vector2)。(5, 2)
cameraPortraitPosition縦モードで写真を撮るとき、フォトブースのカメラの、キャラクターから前方と上方までの距離です(Vector2)。(10, 1)
countdownFontカウントダウン内の数字に使用するフォントです(Enum.Font)。GothamBlack
countdownTextColorカウントダウン内の数字の色です(Color3)。[255, 255, 255]
printoutCharacterPositionプリントアウトが表示されているときの画面上の文字位置です(UDim2)。(0.5, 0, 0.5, 0)
printoutCharacterSizeキャラクターがプリントアウトで取る画面スペースの量です(UDim2)。(1, 0, 1, 0)
characterAnimationキャラクターが写真で撮影するアニメーションを、その開始フレームで一時停止した場合のアセットIDです。"rbxassetid://6899663224"
filterImageフィルターとして写真に適用する画像です。 nilの場合、画像のエッジを暗くするデフォルトのフィルタが使用されます。nil

Data

キー概要デフォルト
maxActivationDistanceプロンプトが表示されるまでに、プレイヤーのキャラクターがPhoto Boothから離れることができる最大距離(スタッド単位)です。10
countdownBeepSoundカウントダウンに表示される各数字に対してプレイするSoundのアセットIDです。"rbxassetid://7743999789"
countdownFlashSoundフラッシュエフェクトが表示されるときにプレイするSoundのアセットIDです。"rbxassetid://7744000850"
countdownSecondsカウントダウンする秒数です。3

その他

キー概要デフォルト
photoboothTagその場所にあるすべての「ブース」を見つけるために、CollectionServiceによって使用されるタグです。"PhotoBooth"
LocalScript - ConfigurePhotoBooth

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.configure({
frameMessage = "What a cool pose!",
fadeUiDelay = 5,
maxActivationDistance = 5,
printoutCharacterSize = UDim2.fromScale(1.5, 1.5),
})

setBackgrounds

setBackgrounds(backgrounds:table):nil

フォトブースが提供するデフォルトの背景を上書きします。 最適なバーチャル空間のためには、背景画像は、16:9 のアスペクト比(1024×768)で、そのアセット ID は背景配列に含まれている必要があります。 1 ~ 4(包括的な)背景を提供できます。

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.setBackgrounds({
"rbxassetid://7018713114",
"rbxassetid://950538356",
})

イベント

countdownStarted

countdownStarted(): RBXScriptSignal

カウントダウンが開始されると発生します。 このイベントは、LocalScript内でのみ接続できます

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.countdownStarted:Connect(function()
print("The countdown has started")
end)

printoutShown

printoutShown(): RBXScriptSignal

プリントアウトがユーザーに表示されるときに発生します。 このイベントは、LocalScript内でのみ接続できます

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.printoutShown:Connect(function()
print("The printout is showing")
end)

promptShown

promptShown(): RBXScriptSignal

プリントアウトが閉じられて、カメラボタンが再び表示されると発生します。 このイベントは、LocalScript内でのみ接続できます

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhotoBooth = require(ReplicatedStorage:WaitForChild("PhotoBooth"))
PhotoBooth.promptShown:Connect(function()
print("The camera prompt is showing")
end)

コールバック

hideOtherGuis

hideOtherGuis(callback:function)

このコールバックは、プリントアウトが表示される直前に実行されます、これにより、プリントアウトが表示される前に、全体のScreenGuisまたはそれらの内の要素を無効化できます。 Photo Booth が使用する GUI は、ShowInPhotoBooth属性がtrueに設定されています詳細とサンプルコードについてはGUI の可視性をご覧ください。 詳細とサンプルコードについてはGUI の可視性をご覧ください。

showOtherGuis

showOtherGuis(callback:function)

このコールバックは、プリントアウトが閉じられた後に実行され、全体のScreenGuisまたはその内の要素を再度有効化できます。 Photo Booth が使用する GUI は、ShowInPhotoBooth属性がtrueに設定されています詳細とサンプルコードについてはGUI の可視性をご覧ください。 詳細とサンプルコードについてはGUI の可視性をご覧ください。