友達ロケーター

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

経験中の友達を見つけるのは挑戦的である可能性があります。The FriendsLocator 開発者モジュール は、プレイヤーが場プレース内の友達を簡単に見つけてテレポートできるようにします。

モジュールの使用

インストール

エクスペリエンスで FriendsLocator モジュールを使用するには:

  1. ビュータブから、ツールボックスを開き、クリエイターストアタブを選択します。

    Toolbox toggle button in Studio
  2. モデル の順序が選択されていることを確認し、 すべて表示 ボタンをクリックして、 カテゴリ を選択します。

  3. ロケートしてクリックして 開発モジュール タイル。

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

  5. エクスプローラー ウィンドウで、 FriendsLocator モデル全体を ServerScriptService に移動します。エクスペリエンスを実行すると、モジュールは複数のサービスに分配され、実行を開始します。

スタジオでテスト

Studio でモジュールをテストするには、 FriendsLocator モジュールを単独のプレイテストではなくマルチクライアントシミュレーションで実行する必要があります。

  1. In スタータープレイヤースクリプト , 新しい LocalScript を作成し、名前を フレンドロケーター構成 に変更します。

  2. 新しい フレンドロケーター構成 スクリプトに次のコードを貼り付け。スタジオでテスト中にすべてのユーザーにロケーターが表示されるように、showAllPlayers 機能内の configure 機能では、公開された場プレースではなく、ユーザーが検索することを保証します。

    ローカルスクリプト - フレンドロケータを構成する

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- スタジオでデバッグを許可
    })
  3. ツールバーの テスト タブから、 クライアントとサーバー に対して次の組み合わせを選択し、 開始 ボタンをクリックします。スタジオの新しいインスタンスが 3 つ開きます;シミュレートされたサーバーと 2つのシミュレートされたクライアント。

  4. クライアントスタジオインスタンスのどちらかに移動し、他のキャラクターから100スタッド離れて距離を移動し、頭の上にロケーターアイコンが表示されるはずです。

イベントに接続する

フレンド探索者 モジュールは、ユーザーがロケーターアイコンと対話するときにカスタム動作を導入できるように、イベントを露出します。

  1. Make sure that you've created the ConfigureFriendsLocator script outlined in Studio でのテスト .

  2. スクリプトに行 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)
  3. マルチクライアントテスト を実行し、別のキャラクターのロケーターアイコンをクリックします。キャラクターがその場所にテレポートしないことに注意し、イベントがトリガーされて、アイコンクリックのカスタム処理を許可します。

カスタムロケーターUI

デフォルトのスタイルがエクスペリエンスに合わない場合は、デフォルトのアバターポートレイト UI を自分の UI で置き換えることができます。

デフォルトの UI を置き換えるには:

  1. 新しい ScreenGui インスタンスを StarterGui コンテナ内に作成します。

  2. 新しい の子として、 FriendLocator という名前の インスタンスを作成し、 、 のような要素を追加して、カスタムUIを設計します。

  3. 終了すると、 親を無効にする ことで、モジュールが必要になるまでカスタムロケーター UI を表示しないようにします。

  4. (オプション) 友達のアバターポートレートと DisplayName をカスタムUIのどこかに表示したい場合は、 FriendLocator フレーム内に次のインスタンスを配置できます。

    モジュールはこれらのアイテムを検索し、友達のアバターポートレートと/または表示名をそれぞれ表示します。

API リファレンス

機能

設定する

環境設定(config: table )

次のキー/値を介してデフォルト設定オプションを上書きして、config テーブルの中の。

キー説明デフォルト
alwaysOnTopIf true では、すべての上にロケーターアイコンを表示し、3D ワールドオブジェクトにブロックされるのを防ぎます。
showAllPlayersIf 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: CFrameCFrame プレイヤーの 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 でのみ接続できます。

パラメータ
プレイヤー: PlayerPlayer ロケーターアイコンが属するオブジェクト。
playerCFrame: CFrameCFrame プレイヤーの Humanoid.RootPart に属するロケーターアイコンの。
isVisible: booleanロケーターアイコンが現在、ローカルプレイヤーの画面に表示されているかどうか。注: これは、alwaysOnTopfalse である場合、まだ 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)