経験中の友達を見つけるのは挑戦的である可能性があります。The FriendsLocator 開発者モジュール は、プレイヤーが場プレース内の友達を簡単に見つけてテレポートできるようにします。
モジュールの使用
インストール
エクスペリエンスで FriendsLocator モジュールを使用するには:
ビュータブから、ツールボックスを開き、クリエイターストアタブを選択します。
モデル の順序が選択されていることを確認し、 すべて表示 ボタンをクリックして、 カテゴリ を選択します。
ロケートしてクリックして 開発モジュール タイル。
フレンドロケーター モジュールを見つけてクリックするか、3Dビューにドラッグアンドドロップします。
エクスプローラー ウィンドウで、 FriendsLocator モデル全体を ServerScriptService に移動します。エクスペリエンスを実行すると、モジュールは複数のサービスに分配され、実行を開始します。
スタジオでテスト
Studio でモジュールをテストするには、 FriendsLocator モジュールを単独のプレイテストではなくマルチクライアントシミュレーションで実行する必要があります。
In スタータープレイヤースクリプト , 新しい LocalScript を作成し、名前を フレンドロケーター構成 に変更します。
新しい フレンドロケーター構成 スクリプトに次のコードを貼り付け。スタジオでテスト中にすべてのユーザーにロケーターが表示されるように、showAllPlayers 機能内の configure 機能では、公開された場プレースではなく、ユーザーが検索することを保証します。
ローカルスクリプト - フレンドロケータを構成するlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- スタジオでデバッグを許可})ツールバーの テスト タブから、 クライアントとサーバー に対して次の組み合わせを選択し、 開始 ボタンをクリックします。スタジオの新しいインスタンスが 3 つ開きます;シミュレートされたサーバーと 2つのシミュレートされたクライアント。
クライアントスタジオインスタンスのどちらかに移動し、他のキャラクターから100スタッド離れて距離を移動し、頭の上にロケーターアイコンが表示されるはずです。
イベントに接続する
フレンド探索者 モジュールは、ユーザーがロケーターアイコンと対話するときにカスタム動作を導入できるように、イベントを露出します。
Make sure that you've created the ConfigureFriendsLocator script outlined in Studio でのテスト .
スクリプトに行 8 と 11-13 を追加します:
ローカルスクリプト - フレンドロケータを構成するlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- スタジオでデバッグを許可teleportToFriend = false, -- アイコンクリック/タップでテレポートを防止})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)マルチクライアントテスト を実行し、別のキャラクターのロケーターアイコンをクリックします。キャラクターがその場所にテレポートしないことに注意し、イベントがトリガーされて、アイコンクリックのカスタム処理を許可します。
カスタムロケーターUI
デフォルトのスタイルがエクスペリエンスに合わない場合は、デフォルトのアバターポートレイト UI を自分の UI で置き換えることができます。

デフォルトの UI を置き換えるには:
新しい ScreenGui インスタンスを StarterGui コンテナ内に作成します。
新しい の子として、 FriendLocator という名前の インスタンスを作成し、 、 のような要素を追加して、カスタムUIを設計します。
終了すると、 親を無効にする ことで、モジュールが必要になるまでカスタムロケーター UI を表示しないようにします。
(オプション) 友達のアバターポートレートと DisplayName をカスタムUIのどこかに表示したい場合は、 FriendLocator フレーム内に次のインスタンスを配置できます。
- 名前の ImageLabel の ポートレート 。
- 名前 TextLabel の DisplayName 。
モジュールはこれらのアイテムを検索し、友達のアバターポートレートと/または表示名をそれぞれ表示します。
API リファレンス
機能
設定する
環境設定(config: table )
次のキー/値を介してデフォルト設定オプションを上書きして、config テーブルの中の。
キー | 説明 | デフォルト |
---|---|---|
alwaysOnTop | If true では、すべての上にロケーターアイコンを表示し、3D ワールドオブジェクトにブロックされるのを防ぎます。 | 真 |
showAllPlayers | If true 、すべてのプレイヤーの場所を表示し、友達だけでなく;これは、Studio でモジュールの機能を確認するのに役立ちます。 | 偽 |
teleportToFriend | プレイヤーのキャラクターをロケーターアイコンがクリックされたりタップされたときに、フレンドの友達所にテレポートします。 | 真 |
thresholdDistance | ロケーターアイコンが表示されるカメラ距離の境界値;この距離よりも近い友達はアイコンを表示しません。 | 100 |
maxLocators | 特定の時点で表示されるロケーターアイコンの最大数。 | 10 |
ローカルスクリプト - フレンドロケータを構成する
local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
イベント
クリックした
ロケーターアイコンがローカルプレイヤーによってクリック/有効化されると、発火します。このイベントは LocalScript でのみ接続できます。
パラメータ | |
---|---|
プレイヤー: Player | ロケーターアイコンが属するプレイヤー。 |
playerCFrame: CFrame | CFrame プレイヤーの Humanoid.RootPart に属するロケーターアイコンの。 |
本地スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("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("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)
視界が変更された
ロケーターアイコンがローカルプレイヤーの画面に表示されたり非表示になったりすると発火します。このイベントは LocalScript でのみ接続できます。
パラメータ | |
---|---|
プレイヤー: Player | Player ロケーターアイコンが属するオブジェクト。 |
playerCFrame: CFrame | CFrame プレイヤーの Humanoid.RootPart に属するロケーターアイコンの。 |
isVisible: boolean | ロケーターアイコンが現在、ローカルプレイヤーの画面に表示されているかどうか。注: これは、alwaysOnTop が false である場合、まだ true であることに注意してください。3D世界のオブジェクトの後ろでレンダリングされるロケーターです。 |
本地スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Visibility of locator icon for", player.DisplayName, ":", isVisible)
end)