場所の中で友達を見つけるのは難しい場合があります。フレンズロケーター 開発者モジュールを使用すると、プレイヤーは場所の中で友達を簡単に見つけてテレポートできます。
モジュールの使用
インストール
体験の中でフレンズロケーターモジュールを使用するには:
スタジオのウィンドウメニューまたはホームタブツールバーから、ツールボックスを開き、クリエイターストアタブを選択します。

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

パッケージタイルを見つけてクリックします。
フレンズロケーターモジュールを見つけてクリックするか、それを3Dビューにドラッグアンドドロップします。

エクスプローラーウィンドウで、全体のフレンズロケーターモデルをReplicatedStorageに移動します。体験を実行すると、モジュールが実行を開始します。
スタジオでのテスト
スタジオでモジュールをテストするには、フレンズロケーターモジュールをマルチクライアントシミュレーションで実行する必要があります。ソロプレイテストでは友達が存在しないためです。
StarterPlayerScripts内に新しいLocalScriptを作成し、名前をConfigureFriendsLocatorに変更します。

新しいConfigureFriendsLocatorスクリプトに以下のコードを貼り付けます。 configure関数内のshowAllPlayers設定は、スタジオでテスト中にすべてのユーザーに対してロケーターが表示されることを保証しますが、公開された場所ではそうではありません。
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- スタジオでのデバッグを許可})スタジオのメザニンから、2つのクライアントでマルチクライアントシミュレーションを開始します。3つの新しいスタジオインスタンスが開きます;仮想サーバーと2つの仮想クライアントがあります。

いずれかのクライアントスタジオインスタンスに入り、他のキャラクターから100スタッドの距離に移動すると、その頭上にロケーターアイコンが表示されるのを確認できます。

イベントに接続する
フレンズロケーターモジュールは、ロケーターアイコンとユーザーが対話する際にカスタム動作を導入できるようにイベントを公開しています。
スタジオでのテストで概説されているConfigureFriendsLocatorスクリプトを作成していることを確認します。
スクリプトに行8および11-13を追加します:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- スタジオでのデバッグを許可teleportToFriend = false, -- アイコンのクリック/タップでのテレポートを防止})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("あなたは", player.DisplayName, "のロケーターアイコンをクリックしました")end)マルチクライアントテストを実施し、他のキャラクターのロケーターアイコンをクリックします。あなたのキャラクターがその位置にテレポートしないことを確認し、イベントがトリガーされてアイコンのクリックをカスタム処理できるようになります。
カスタムロケータUI
デフォルトのスタイルが体験に合わない場合は、デフォルトのアバターポートレートUIを独自のUIに置き換えることができます。

デフォルトのUIを置き換えるには:
StarterGuiコンテナ内に新しいScreenGuiインスタンスを作成します。

新しいScreenGuiの子としてFriendLocatorという名前のFrameインスタンスを作成し、ImageLabelsやTextLabelsのような要素を追加してカスタムUIをデザインします。

終了したら、モジュールが必要になるまでカスタムロケーターUIを表示しないように親のScreenGuiを無効化します。

(オプション) 友達のアバターポートレートおよびDisplayNameをカスタムUIのどこかに表示させたい場合は、FriendLocatorフレーム内に以下のインスタンスを配置できます。
- Portraitという名前のImageLabel。
- DisplayNameという名前のTextLabel。

モジュールはこれらのアイテムを探し、友達のアバターポートレートおよび/または表示名をそれぞれ表示します。
APIリファレンス
関数
configure
configure(config: table)
configテーブル内の以下のキー/値を介してデフォルトの構成オプションをオーバーライドします。
| キー | 説明 | デフォルト |
|---|---|---|
| alwaysOnTop | trueの場合、すべての上にロケーターアイコンを表示し、3D世界のオブジェクトによってブロックされないようにします。 | true |
| showAllPlayers | trueの場合、友達だけでなくすべてのプレイヤーの位置を表示します。これにより、スタジオでモジュールの機能を確認できます。 | false |
| teleportToFriend | ロケーターアイコンがクリックまたはタップされたときにプレイヤーキャラクターを友達の位置にテレポートします。 | true |
| thresholdDistance | ロケーターアイコンが表示されるカメラ距離のしきい値。この距離より近い友達はアイコンを表示しません。 | 100 |
| maxLocators | 任意の時点で表示されるロケーターアイコンの最大数。 | 10 |
LocalScript - ConfigureFriendsLocatorlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
イベント
clicked
ロケーターアイコンがローカルプレイヤーによってクリック/アクティブ化されたときに発火します。このイベントはLocalScript内でのみ接続できます。
| パラメータ | |
|---|---|
| player: Player | ロケーターアイコンが属するプレイヤー。 |
| playerCFrame: CFrame | ロケーターアイコンが属するプレイヤーのHumanoid.RootPartのCFrame。 |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- 対象の位置周辺のストリーミングをリクエスト
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("あなたは", player.DisplayName, "のロケーターアイコンをクリックしました。位置:", playerCFrame.Position)
end)
visibilityChanged
ローカルプレーヤーの画面でロケーターアイコンが表示/非表示になったときに発火します。このイベントはLocalScript内でのみ接続できます。
| パラメータ | |
|---|---|
| player: Player | ロケーターアイコンが属するPlayerオブジェクト。 |
| playerCFrame: CFrame | ロケーターアイコンが属するプレイヤーのHumanoid.RootPartのCFrame。 |
| isVisible: boolean | ローカルプレイヤーの画面でロケーターアイコンが現在表示されているかどうか。デフォルトでalwaysOnTopがfalseで、ロケーターが3D世界内のオブジェクトの後ろに描画されている場合でも、これがtrueであることに注意してください。 |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print(player.DisplayName, "のロケーターアイコンの可視性:", isVisible)
end)