エクスペリエンス中に友達を見つけることは困難です。 SpawnWithFriends 開発者モジュール は、エクスペリエンス中の友達の 1 つの近くにスポーンプレイヤーを自動的に移動します。このモジュールは、コマンドでプレイヤーをテレポートする代わりに自動的に移動することもできます。
モジュール使用
インストール
エクスペリエンスで SpawnWithFriends モジュールを使用するには:
モデル ソートが選択されていることを確認してから、 すべてを表示 ボタンをクリックして、 カテゴリ のための 1>ボタン1> をクリックします。
デバッグモジュール タイルを見つけてクリックします。
友達とスポーン モジュールを見つけ、クリックするか、3D ビューにドラッグアンドドロップします。
In the Explorer ウィンドウで、 SpawnWithFriends モデル全体を ServerScriptService に移動します。エクスペリエンスを実行すると、モジュールは各サービスに分配され、実行を開始します。
制限付きのスポーンエリア
このモジュールは、VIPルーム、アクセス権限のあるエリアなど、制限されたエリアでプレイヤーがスポーンすることを防ぐために結果を生成する可能性があります。プレイヤーがこれらのエリアにテレポートするのを防ぐには:
Class.BasePart.Anchored|Anchored ブロックで制限エリアを満たします。CanCollide 、CanTouch 、および 1> Class.BasePart.CanQueue|CanQueue 1> がすべてブロッ
各ブロックのプロパティの タグ セクション、または Studio の タグエディタ を使用して、タグを RestrictedSpawnArea 適用して、2> Class.CollectionService2> がそれらを検出するようにします。
次のコードを Script 内の ServerScriptService に入れます。
スクリプトlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("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 リファレンス
機能
環境設定
concept テーブルの次のキー/値を通じて、デフォルトの設定オプションをオーバーライドします。この関数は Script からのみ呼び出すことができます。
キー | 説明 | デフォルト |
---|---|---|
teleportToFriendOnRespawn | false を teleportToRandomFriend に設定すると、テレポートをフレンドにのみ手動で行います。 | はい |
teleportDistance | プレイヤーが互いからどれくらい離れているか、スタッドで測定される。 | 5 |
maxCharacterVelocity | この値より速く移動するキャラクターは、テレポート候補として選択されない場合があります。たとえば、移動車両の中のキャラクターなどです。 | 48 |
bypassFriendshipCheck | 設定が「真」になっている場合、すべてのプレイヤーがテレポートの候補になります、友達だけではありません。 | 偽 |
showLogs | ログメッセージを出力で表示するかどうか。 | 偽 |
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
teleportToRandomFriend
プレイヤーのエクスペリエンス内の友達の 1 つにテレポートを手動でトリガーします。返す値は、テレポートが成功したかどうかを示すボールーンです:サーバーに友達がないため、テレポートに失敗する可能性があります。この関数は Script からのみ呼び出すことができます。
setTeleportationValidation
有効なバリデーターコールバック関数を呼び出すことで、カスタムのプレテレポートチェックを実行できます。コールバックは 3つのパラメーターを受信します:
パラメータ | 説明 |
---|---|
playerToTeleport | 参照先: Player がテレポートされています。 |
destinationPlayer | 参照先のターゲット Player が playerToTeleport にテレポートされています。 |
teleportationPoint | CFrame で、playerToTeleport がテレポートする。 |
この関数とそのコールバックは、Script 内のみ使用でき、コールバックは teleport の処理を示すBooleanを返します。たとえば、次の有効なバリデータ関数の return ロジックは、スポーンプレイヤーと目的地プレイヤーが同じチームにいることを保証します。
スクリプト
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
-- 同じチームにいる場合にのみプレイヤーをテレポートします
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)