フレンズロケーター

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

友達を体験内で見つけるのは難しい場合があります。FriendsLocator 開発者モジュールを使用すると、プレイヤーは体験内で簡単に友達を見つけてテレポートできるようになります。

モジュールの使用

インストール

体験内でFriendsLocatorモジュールを使用するには:

  1. スタジオのウィンドウメニューまたはホームタブツールバーから、ツールボックスを開いてクリエイターストアタブを選択します。

  2. モデルの並べ替えが選択されていることを確認し、カテゴリすべてを見るボタンをクリックします。

  3. パッケージタイルを見つけてクリックします。

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

  5. エクスプローラーウィンドウで、FriendsLocatorモデル全体をReplicatedStorageに移動します。体験を実行すると、モジュールが動作を開始します。

スタジオでのテスト

スタジオでモジュールをテストするには、FriendsLocatorモジュールをマルチクライアントシミュレーションで実行する必要があります。なぜなら、ソロプレイテストでは友達が存在しないからです。

  1. StarterPlayerScripts内に新しいLocalScriptを作成し、ConfigureFriendsLocatorに名前を変更します。

  2. 新しいConfigureFriendsLocatorスクリプトに次のコードを貼り付けます。configure関数内のshowAllPlayers設定は、スタジオでテスト中にすべてのユーザーのロケーターが表示されるようにしますが、公開された場所では表示されません。

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- スタジオでのデバッグを許可
    })
  3. スタジオのメザニンから、2クライアントでのマルチクライアントシミュレーションを開始します。スタジオが3つの新しいインスタンスを開きます。1つはシミュレーションされたサーバー、2つはシミュレーションされたクライアントです。

    スタジオのメザニンのテストモードのドロップダウンでのサーバーおよびクライアントオプション。
  4. どちらかのクライアントスタジオインスタンスに入り、他のキャラクターから100スタッドの距離を移動すると、その頭上にロケーターアイコンが表示されるのが見えるはずです。

イベントへの接続

FriendsLocatorモジュールは、ロケーターアイコンとユーザーが対話する際にカスタム動作を導入できるようにイベントを公開しています。

  1. スタジオでのテストで説明したConfigureFriendsLocatorスクリプトを作成していることを確認してください。

  2. スクリプトに行8と11から13を追加します:

    LocalScript - ConfigureFriendsLocator

    local 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)
  3. マルチクライアントテストを実施し、他のキャラクターのロケーターアイコンをクリックします。あなたのキャラクターがその位置にテレポートしないことに気づき、イベントがトリガーされてアイコンのクリックをカスタム処理できることが確認できます。

カスタムロケーターUI

デフォルトスタイルがあなたの体験に合わない場合は、デフォルトのアバターポートレートUIを独自のUIに置き換えることができます。

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

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

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

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

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

    モジュールはこれらのアイテムを探して、友だちのアバターポートレートおよび/または表示名をそれぞれ表示します。

APIリファレンス

関数

configure

configure(config: table)

configテーブル内の以下のキー/値を通してデフォルトの設定オプションを上書きします。

キー説明デフォルト
alwaysOnToptrueの場合、ロケーターアイコンをすべての上に表示し、3Dワールドオブジェクトによってブロックされないようにします。true
showAllPlayerstrueの場合、友達だけでなくすべてのプレイヤーの位置が表示されます。これはスタジオでのモジュールの機能を確認するのに役立ちます。false
teleportToFriendロケーターアイコンがクリックまたはタップされたときに、プレイヤーキャラクターを友達の位置にテレポートします。true
thresholdDistanceロケーターアイコンが表示されるカメラの距離の閾値。この距離より近い友達はアイコンを表示されません。100
maxLocators任意の時点で表示されるロケーターアイコンの最大数。10
LocalScript - ConfigureFriendsLocator

local 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.RootPartCFrame
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.RootPartCFrame
isVisible: booleanロケーターアイコンが現在ローカルプレイヤーの画面に表示されているかどうか。alwaysOnTopfalseで、ロケーターが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)
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。