与朋友生成

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

在体验中找到朋友可能是一件挑战。 SpawnWithFriends 开发者模块 会自动将生成的玩家移动到体验中的其中一个朋友的旁边。 此模块还可以配置为在命令时自动传送玩家,而不是在体验中。

模块使用

安装

要在体验中使用 SpawnWithFriends 模块:

  1. 视图选项卡打开工具箱并选择 创建者商店 选项卡。

    Toolbox toggle button in Studio
  2. 确保 模型排序 已选择,然后单击 查看所有 按钮为 类别

  3. 找到并单击 开发者模块 地瓦片。

  4. 找到 与朋友同步生成 模块,然后单击它,或者将其拖放到 3D 视查看中。

  5. Explorer 窗口中,将整个 SpawnWithFriends 模型移入 ServerScriptService 。在运行体验时,模块将分配到各个服务并开始运行。

受限的生成区域

此模块可能会导致玩家在 VIP 房间、仅限空间等限定区域生成。要防止玩家传送到这些区域:

  1. 填充受限区域的隐形 Anchored 块。请确保 CanCollide , CanTouch 和 1> Class.BasePart.CanQuery|CanQuery1> 都已禁用为所有块。

    填充整个监狱房间,防止玩家在其中生成
  2. 使用每个方砖块的属性的 标签 部分,或 Studio 的 标签编辑器,应用标签 RestrictedSpawnArea 以便 2>Class.CollectionService2> 检测到它们。

  3. 将以下代码粘贴到 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") do
    local relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint.Position)
    local size = area.Size
    local inXBounds = relativePosition.X < size.X / 2 and relativePosition.X > -size.X / 2
    local inZBounds = relativePosition.Z < size.Z / 2 and relativePosition.Z > -size.Z / 2
    if inXBounds and inZBounds then
    return false -- 目的地在受限区域内;取消传送
    end
    end
    return true -- 生成目的地不会重叠任何受限区域;请继续进行传送
    end
    SpawnWithFriends.setTeleportationValidator(validator)

API 引用

函数

配置

配置(配置: table )

通过 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
})

传送至随机朋友

teleportToRandomFriend(playerToTeleport: Player): boolean

手动触发玩家传送到体验中的其他玩家之一。返回一个Boolean,表示是否成功传送;如果传送失败,可能是因为服务器中缺少朋友或无法找到无阻碍传送点。此函数只能从 Script 中调用。

设置传送验证

setTeleportationValidation(Validation: function )

允许您通过调用有效的验证回调函数执行自定义预-传输检查。回调接收三个参数:

参数描述
playerToTeleport参考正在传送的 Player
destinationPlayer参考目标 Player 正在被传送到。
teleportationPointCFrame 在哪里 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)