友達ロケータ

体験内でフレンドを見つけるのは難しいかもしれません。 FriendsLocator開発者モジュールでは、プレイヤーが友達を簡単に見つけ、そこにテレポートできるようにします。

モジュールの使用法

インストール

バーチャル空間内でFriendsLocatorモジュールを使用するには、次の手順に従います。

  1. 表示タブから、ツールボックスを開き、マーケットプレイスタブを選択します。

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

  3. DEV モジュールタイルを見つけてクリックします。

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

  5. エクスプローラウィンドウで、FriendsLocatorモデル全体をServerScriptServiceに移動します。 バーチャル空間を実行すると、モジュールはそれ自体をさまざまなサービスに配布し、実行を開始します。

Studio でのテスト

ソロプレイテストではフレンドがいないため、Studio でモジュールをテストするには、FriendsLocatorモジュールをマルチクライアントシミュレーションで実行する必要があります。

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

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

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Allows for debugging in Studio
    })
  3. テストタブから、クライアントとサーバーの以下の組み合わせを選択し、開始ボタンをクリックします。 Studio の 3 つの新しいインスタンス(シミュレーションサーバー 1 つとシミュレーションクライアント 2 つ)が開きます。

  4. クライアントのいずれかの Studio インスタンスに移動し、もう一方のキャラクターから 100 スタッド離れたところに移動すると、そのキャラクターの頭上にロケーターアイコンが表示されます。

イベントへの接続

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

  1. Studio でのテストで概説したConfigureFriendsLocatorスクリプトを作成していることを確認します。

  2. スクリプトに 8 と 11 ~ 13 行を追加します。

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Allows for debugging in Studio
    teleportToFriend = false, -- Prevent teleport on icon click/tap
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. マルチクライアントテストを実施し、他のキャラクターのロケーターアイコンをクリックします。 キャラクターはその場所にテレポートせず、イベントトリガーでアイコンクリックのカスタム処理が可能になることにご留意ください。

カスタムロケーター UI

デフォルトのスタイルがバーチャル空間に適していない場合、デフォルトのアバターポートレート UI を独自の UI に置き換えることができます。

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

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

  2. 新しいScreenGuiの子としてFriendLocatorという名前のFrameインスタンスを作成します。

  3. FriendLocatorフレームにImageLabelsTextLabelsなどを追加してカスタム UI をデザインします。

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

  5. **(オプション)**フレンドのアバターポートレートとDisplayNameをカスタム UI のどこかに表示させたい場合は、FriendLocatorフレーム内に以下のインスタンスを配置できます。

    モジュールは、これらのアイテムを探して、フレンドのアバターポートレートおよび/または表示名を別々に表示します。

API リファレンス

関数

設定

configure(config:table):nil

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

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

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.configure({
alwaysOnTop = true,
showAllPlayers = false,
teleportToFriend = true,
thresholdDistance = 100,
maxLocators = 10
})

イベント

clicked

clicked(player:Player, playerCFrame:CFrame): RBXScriptSignal

ロケーターアイコンがローカルプレーヤーによってクリック/アクティブ化されたときに発生します。 このイベントは、LocalScript内でのみ接続できます

パラメータ
プレイヤー:Playerロケーターアイコンが属するプレイヤー。
playerCFrame: CFrameロケーターアイコンが属するプレイヤーのHumanoid.RootPartCFrame
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.clicked:Connect(function(player, playerCFrame)
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)

visibilityChanged

visibilityChanged(player:Player, playerCFrame:CFrame, isVisible:boolean): RBXScriptSignal

ローカルプレイヤーの画面でロケーターアイコンが表示/非表示にされると発生します。 このイベントは、LocalScript内でのみ接続できます

パラメータ
プレイヤー:Playerロケーターアイコンが属するPlayerオブジェクト。
playerCFrame: CFrameロケーターアイコンが属するプレイヤーのHumanoid.RootPartCFrame
isVisible: boolean現在、ローカルプレイヤーの画面にロケーターアイコンが表示されているかどうか。 alwaysOnTopfalseで、ロケーターが3D世界のオブジェクトの背後にレンダリングされる場合、これはまだtrueであることにご注意ください。
LocalScript

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)