写真を撮ることは、素晴らしい体験を記念する完璧な方法です。 PhotoBoothの開発者モジュールは、プレイヤーがバーチャル空間を表す背景でユニークなポーズができる使いやすい撮影ステージングツールです。
モジュールの使用法
インストール
バーチャル空間でPhotoBoothモジュールを使用する方法
表示タブから、ツールボックスを開き、マーケットプレイスタブを選択します。
モデルのソートが選択されていることを確認し、カテゴリのすべてのボタンを表示をクリックします。
DEV モジュールタイルを見つけてクリックします。
Photo Boothモジュールを見つけてクリックするか、3D ビューにドラッグアンドドロップします。
エクスプローラウィンドウで、PhotoBoothモデル全体をServerScriptServiceに移動します。 バーチャル空間を実行すると、モジュールはそれ自体をさまざまなサービスに配布し、実行を開始します。
ブースの位置決め
モジュールには、3D 空間に配置できるPhotoBoothモデルが付属しています。 このモデルは、プレイヤーが写真を設定するために操作するものです。
モジュールのメインフォルダのワークスペース内でPhotoBoothメッシュを見つけます。
それを最上位レベルのワークスペース階層に移動し、必要な場所に配置します。
設定
モジュールは、ほとんどのユースケースで動作するように事前設定されていますが、設定機能を使用して簡単カスタマイズできます。 例えば、写真の下部にあるデフォルトメッセージを変更するには:
StarterPlayerScriptsで、新しいLocalScriptを作成して、それをConfigurePhotoBoothに名前変更します。
以下のコードを新しいスクリプトに貼り付けます。
LocalScript - ConfigurePhotoBoothlocal 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 の可視性
デフォルトでは、フォトブースは、写真がステージングされているときに、すべてのScreenGuisとCoreGuisを非表示にします。 この自動非表示動作を上書きし、どの GUI を表示のままにするかをプログラムで決定したい場合は、hideOtherGuisとshowOtherGuisコールバックを含め、自分のカスタムロジックで応答します。
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 |
closeButtonImage | closeButtonBackgroundImage画像の上に配置した、閉じたフォトボタンに使用する画像です。 | "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 の可視性をご覧ください。