体験内でフレンドを見つけるのは難しいかもしれません。 FriendsLocatorの開発者モジュールでは、プレイヤーが友達を簡単に見つけ、そこにテレポートできるようにします。
モジュールの使用法
インストール
バーチャル空間内でFriendsLocatorモジュールを使用するには、次の手順に従います。
表示タブから、ツールボックスを開き、マーケットプレイスタブを選択します。
モデルのソートが選択されていることを確認し、カテゴリのすべてのボタンを表示をクリックします。
DEV モジュールタイルを見つけてクリックします。
Friends Locatorモジュールを見つけてクリックするか、3D ビューにドラッグアンドドロップします。
エクスプローラウィンドウで、FriendsLocatorモデル全体をServerScriptServiceに移動します。 バーチャル空間を実行すると、モジュールはそれ自体をさまざまなサービスに配布し、実行を開始します。
Studio でのテスト
ソロプレイテストではフレンドがいないため、Studio でモジュールをテストするには、FriendsLocatorモジュールをマルチクライアントシミュレーションで実行する必要があります。
StarterPlayerScriptsで、新しいを作成して、それをConfigureFriendsLocatorに名前変更LocalScriptします。
以下のコードを新しいConfigureFriendsLocatorスクリプトに貼り付けます。 showAllPlayers設定関数内の構成では、Studio でのテスト中はすべてのユーザーに対してロケーターが表示されますが、公開された場所では表示されません。
LocalScript - ConfigureFriendsLocatorlocal 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})テストタブから、クライアントとサーバーの以下の組み合わせを選択し、開始ボタンをクリックします。 Studio の 3 つの新しいインスタンス(シミュレーションサーバー 1 つとシミュレーションクライアント 2 つ)が開きます。
クライアントのいずれかの Studio インスタンスに移動し、もう一方のキャラクターから 100 スタッド離れたところに移動すると、そのキャラクターの頭上にロケーターアイコンが表示されます。
イベントへの接続
FriendsLocatorモジュールは、ユーザーがロケーターアイコンを操作したときにカスタム動作を導入できるように、イベントを公開しています。
Studio でのテストで概説したConfigureFriendsLocatorスクリプトを作成していることを確認します。
スクリプトに 8 と 11 ~ 13 行を追加します。
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Allows for debugging in StudioteleportToFriend = false, -- Prevent teleport on icon click/tap})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)マルチクライアントテストを実施し、他のキャラクターのロケーターアイコンをクリックします。 キャラクターはその場所にテレポートせず、イベントトリガーでアイコンクリックのカスタム処理が可能になることにご留意ください。
カスタムロケーター UI
デフォルトのスタイルがバーチャル空間に適していない場合、デフォルトのアバターポートレート UI を独自の UI に置き換えることができます。
デフォルト UI を置き換えるには:
StarterGuiコンテナ内に新しいScreenGuiインスタンスを作成します。
FriendLocatorフレームにImageLabelsやTextLabelsなどを追加してカスタム UI をデザインします。
終了したら、モジュールが必要になるまでカスタムロケーター UI が表示されないように、親ScreenGuiを無効にします。
**(オプション)**フレンドのアバターポートレートとDisplayNameをカスタム UI のどこかに表示させたい場合は、FriendLocatorフレーム内に以下のインスタンスを配置できます。
- ポートレートという名前のImageLabel。
- DisplayNameという名前のTextLabel。
モジュールは、これらのアイテムを探して、フレンドのアバターポートレートおよび/または表示名を別々に表示します。
API リファレンス
関数
設定
configure(config:table):nil
デフォルト設定オプションは、configテーブル内の以下のキー/値を使用して上書きします。
キー | 概要 | デフォルト |
---|---|---|
alwaysOnTop | trueの場合、すべての一番上にロケーターアイコンが表示され、3Dワールドオブジェクトによってブロックされるのを防ぎます。 | true |
showAllPlayers | trueの場合、フレンドだけでなく、すべてのプレイヤーの位置が表示されます。 これにより、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.RootPartのCFrame。 |
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.RootPartのCFrame。 |
isVisible: boolean | 現在、ローカルプレイヤーの画面にロケーターアイコンが表示されているかどうか。 alwaysOnTopがfalseで、ロケーターが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)