在体验中找到朋友可能是一件挑战。 SpawnWithFriends 开发者模块 会自动将生成的玩家移动到体验中的其中一个朋友的旁边。 此模块还可以配置为在命令时自动传送玩家,而不是在体验中。
模块使用
安装
要在体验中使用 SpawnWithFriends 模块:
确保 模型排序 已选择,然后单击 查看所有 按钮为 类别 。
找到并单击 开发者模块 地瓦片。
找到 与朋友同步生成 模块,然后单击它,或者将其拖放到 3D 视查看中。
在 Explorer 窗口中,将整个 SpawnWithFriends 模型移入 ServerScriptService 。在运行体验时,模块将分配到各个服务并开始运行。
受限的生成区域
此模块可能会导致玩家在 VIP 房间、仅限空间等限定区域生成。要防止玩家传送到这些区域:
填充受限区域的隐形 Anchored 块。请确保 CanCollide , CanTouch 和 1> Class.BasePart.CanQuery|CanQuery1> 都已禁用为所有块。
使用每个方砖块的属性的 标签 部分,或 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 引用
函数
配置
通过 config 表中的关键/值来覆盖默认配置选项。 此功能仅从 Script 中调用。
钥匙 | 描述 | 默认 |
---|---|---|
teleportToFriendOnRespawn | 如果设置为 false,只有通过 teleportToRandomFriend 手动传送到朋友。 | 真的 |
teleportDistance | 玩家之间的距离,用钉子计量。 | 5 |
maxCharacterVelocity | 移动速度高于此值的角色将不会被选为传送候选人,例如移动车辆上的人。 | 48 |
bypassFriendshipCheck | 如果设置为 true, 所有 玩家都将是传送的候选人,不仅仅是朋友。 | 否 |
showLogs | 是否显示或不显示日志消息在输出。 | 否 |
脚本
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
传送至随机朋友
手动触发玩家传送到体验中的其他玩家之一。返回一个Boolean,表示是否成功传送;如果传送失败,可能是因为服务器中缺少朋友或无法找到无阻碍传送点。此函数只能从 Script 中调用。
设置传送验证
允许您通过调用有效的验证回调函数执行自定义预-传输检查。回调接收三个参数:
参数 | 描述 |
---|---|
playerToTeleport | 参考正在传送的 Player。 |
destinationPlayer | 参考目标 Player 正在被传送到。 |
teleportationPoint | CFrame 在哪里 playerToTeleport 正在传送到。 |
此函数和其回调仅在 Script 中使用,回调返回一个Boolean,表示是否传送。例如,在以下验证器函数中的 return 逻辑确保 Spawning 玩家和目的地玩家都在同一团队。
脚本
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)