友達を経験内で見つけるのは難しいことがあります。SpawnWithFriends 開発者モジュールは、出現するプレイヤーを、その経験内にいる友達の近くに自動的に移動させます。このモジュールは、あらかじめ設定しておけば、自動的にでなく、指示に従ってプレイヤーをテレポートさせることもできます。
モジュールの使用
インストール
SpawnWithFriendsモジュールを経験内で使用するには:
Studioのウィンドウメニューまたはホームタブのツールバーから、ツールボックスを開き、クリエイターストアタブを選択します。

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

パッケージタイルを見つけてクリックします。
友達と一緒に出現モジュールを見つけてクリックするか、3Dビューにドラッグ&ドロップします。

エクスプローラーウィンドウで、SpawnWithFriendsモデル全体をReplicatedStorageに移動します。経験を実行すると、モジュールが実行を開始します。
制限された出現エリア
このモジュールは、プレイヤーがVIPルームやアクセス専用スペースなどの制限されたエリアに出現する原因となる場合があります。これらのエリアにプレイヤーがテレポートするのを防ぐには:
制限されたエリアに不可視のAnchoredブロックを埋めます。すべてのブロックについてCanCollide、CanTouch、CanQueryが無効になっていることを確認します。

プレイヤーが内部に出現するのを防ぐために、監獄の部屋全体を満たすブロック 各ブロックのプロパティのタグセクションを使用して、RestrictedSpawnAreaタグを適用し、CollectionServiceがそれらを検出できるようにします。
次のコードをServerScriptService内のScriptに貼り付けます。
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)local function validator(playerToTeleport, destinationPlayer, teleportationPoint)-- タグ付けされた部分をすべて反復for _, area in CollectionService:GetTagged("RestrictedSpawnArea") dolocal relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint.Position)local size = area.Sizelocal inXBounds = relativePosition.X < size.X / 2 and relativePosition.X > -size.X / 2local inZBounds = relativePosition.Z < size.Z / 2 and relativePosition.Z > -size.Z / 2if inXBounds and inZBounds thenreturn false -- 出現先が制限されたエリア内にあるため、テレポートを中止endendreturn true -- 出現先が制限されたエリアに重ならないため、テレポートを続行endSpawnWithFriends.setTeleportationValidator(validator)
API リファレンス
関数
configure
configure(config: table)
configテーブルの以下のキー/値を通じてデフォルトの設定オプションを上書きします。この関数はScriptからのみ呼び出すことができます。
| キー | 説明 | デフォルト |
|---|---|---|
| teleportToFriendOnRespawn | falseに設定すると、友達へのテレポートは手動でのみ行われ、teleportToRandomFriendによって実行されます。 | true |
| teleportDistance | プレイヤーが互いからどれくらい離れて出現するべきか、スタッド単位で測定されます。 | 5 |
| maxCharacterVelocity | この値よりも速く移動しているキャラクターは、テレポート候補として選ばれません。例えば、移動中の車両内のキャラクターなどです。 | 48 |
| bypassFriendshipCheck | trueに設定すると、すべてのプレイヤーがテレポートの候補になり、友達だけではなくなります。 | false |
| showLogs | ログメッセージを出力に表示するかどうか。 | false |
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
teleportToRandomFriend
teleportToRandomFriend(playerToTeleport: Player): boolean
プレイヤーを経験内の友達の一人に手動でテレポートします。テレポートが成功したかどうかを示すブーリアンを返します。テレポートに失敗する原因は、サーバーに友達がいない場合や、遮られていないテレポートポイントを見つけられない場合です。この関数はScriptからのみ呼び出すことができます。
setTeleportationValidator
setTeleportationValidator(validator: function)
バリデータコールバック関数をフックアップして、カスタム前テレポートチェックを実行できます。コールバックは3つのパラメータを受け取ります。
| パラメータ | 説明 |
|---|---|
| playerToTeleport | テレポートされるPlayerへの参照。 |
| destinationPlayer | playerToTeleportがテレポートされる対象のPlayerへの参照。 |
| teleportationPoint | playerToTeleportがテレポートされるCFrame。 |
この関数とそのコールバックはScriptでのみ使用され、コールバックはテレポートを続行すべきかどうかを示すブーリアンを返します。例えば、以下のバリデータ関数のreturnロジックにより、出現するプレイヤーと出現先のプレイヤーが同じチームにいることが保証されます。
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)
-- プレイヤーが同じチームにいる場合のみテレポート
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)