重生位置或“重生”决定死亡时 Player 重生在哪里。它们可以配置为只允许特定玩家使用每个重生点,使用 Teams 。它们还控制新生玩家的配置方式 ForceFields 。
SpawnLocations可以用作检查点,例如在障碍赛中,使用 SpawnLocation.AllowTeamChangeOnTouch 属性,当玩家触碰它时,它们将更换队伍为 SpawnLocation 的团队。在这种情况下,只有第一个 Team 应将 Team.AutoAssignable 设置为真,否则玩家将无法在第一个检查点开始。
注意,如果将 SpawnLocation 添加到 Studio 的 Workspace 中,将 SpawnLocation.Neutral 设置为 false,将创建相应于 SpawnLocation.TeamColor 的团队,如果它还不存在。当在游戏中使用 Script 创建生成时,或者已添加 SpawnLocation 的属性后更改时,此行为不会发生。建议开发人员始终手动设置他们的团队,而不要依赖此行为。
生成规则
当玩家重生时,有几个规则会发挥作用给定的 SpawnLocation:
- 当 SpawnLocation.Neutral 设置为 false 时,只有 Players 匹配 Player.TeamColor 的 SpawnLocation.TeamColor 才会重生在上面
- 当 SpawnLocation.Neutral 设置为真时,任何玩家都可以在它上方生成,无论 SpawnLocation.TeamColor
- 如果多个符合条件的生成可用于 Player,将随机选择一个
- 玩家会在 SpawnLocation 顶部的不同位置重生,但目前,如果他们在生成后立即重生,他们仍可能重生在一起
还见:
- 如果你想配置玩家重生所需的时间,看看 RespawnTime 属性
代码示例
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
概要
属性
允许一个 Player 通过触碰 SpawnLocation 加入团队。当设置为真时,如果 Player 角色与 SpawnLocation 接触,玩家的 Player.TeamColor 将设置为 SpawnLocation.TeamColor .
在秒内,一个 ForceField 将被应用到在这个 Player 中生成的角色上,一个 SpawnLocation 角色。如果持续时间为零,ForceField 将永远不会创建,也不会触发 Instance.DescendantAdded 或 Instance.ChildAdded 事件。
设置是否启用 SpawnLocation 。禁用玩家时无法在 SpawnLocation 生成,禁用允许团队更改触摸功能。
是否一个 SpawnLocation 是否与特定团队有关。这意味着任何 Player , 任何 Team , 如果此属性设置为真,都可以在它上生成如果此属性设置为真。
设置 SpawnLocation 是哪个团队所属。如果 SpawnLocation.Neutral 属性为 false,只有 Players 与重生点的团队颜色相同的 Player.TeamColor 才能在那里生成。
设置对象的整体形状。
决定零件是否因物理原因无法移动。
零件装配的角速度。
零件在世界空间的质量中心。
零件装配的线速度。
零件装配的总质量。
对装配的根部分的参考。
决定零件是否会物理地与音频模拟进行交互,类似于 CastShadow 对于照明。
确定零件后面的表面类型。
确定零件底部面的表面类型。
决定零件的颜色。
确定世界中 BasePart 的位置和方向。
决定零件是否可能与其他零件发生碰撞。
决定零件在空间查询操作中是否被考虑。
决定是否 Touched 和 TouchEnded 事件在部分上发射。
决定零件是否投射阴影。
描述零件的质量中心所在的世界位置。
描述零件碰撞群组的名称。
决定零件的颜色。
指示零件的当前物理属性。
确定零件的几个物理属性。
用于启用或禁用零件和装配件的空气动力。
物理尺寸的 BasePart 在物理引擎中被视为实际尺寸。
确定零件前面的表面类型。
确定零件左侧面的表面类型。
确定一个乘数 BasePart.Transparency ,仅对本地客户可见。
决定是否在工作室中选择零件。
描述零件的质量、密度和体积的产品。
决定零件是否会对其刚性身体的总质量或惯性贡献。
确定零件的纹理和默认物理属性。
MaterialVariant 的名称。
描述世界中零件的旋转。
指定零件的支点与其 CFrame 的偏移。
描述零件在世界上的位置。
上次记录的物理更新时间。
决定零件是否反映了天空盒。
描述 Resize() 方法允许的最小变更的尺寸。
描述可以调整零件大小的面。
确定零件右侧的表面类型。
确定装配根部分的主规则。
零件在三个轴上的旋转度。
确定零件的尺寸(长度、宽度、高度)。
确定零件顶部面的表面类型。
决定零件可以通过多少(零件不透明度的反转)。
方法
继承自BasePart的方法对装配应用角动力。
在装配的 center of mass 应用脉冲到装配。
在指定位置应用脉冲到装配。
返回零件是否可以相互碰撞。
检查您是否可以设置零件的网络所有权。
返回一个包含任何类型刚性连接头的对象与零件之间的表。
返回连接到该部分的所有关节或约束。
返回 Mass 属性的值。
返回当前网络所有者为该部分的网络所有者的现有玩家,或 nil 在服务器的情况下。
如果游戏引擎自动决定此部分的网络所有者,返回真值。
返回装配零件的基础部分。
返回与此部分交叉的所有 BasePart.CanCollide 真零件的表。
返回零件在给定位置对这个零件的线速度。
如果对象连接到一个部件,可以将其固定在那里(例如 Anchored 部件),则返回真值;否则返回错误值。
像使用 Studio 缩放工具一样,改变对象的大小。
将指定的玩家设置为网络所有者,用于此网络和所有连接的零件。
让游戏引擎动态决定谁将处理零件的物理(客户端之一或服务器)。
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件和给定数组列中的其他零件的重叠几何中创建一个新的 IntersectOperation 。
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件中创建一个新的 UnionOperation ,减去给定数组列中零件所占的几何图形。
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件中创建一个新的 UnionOperation ,加上给定数组列中零件所占的几何图形。
获取 PVInstance 的枢轴。
将 以及所有其子孙 转换为位于指定 的位置,使旋转点现在位于指定的 。
属性
AllowTeamChangeOnTouch
允许一个 Player 通过触碰 SpawnLocation 加入团队。当设置为真时,如果 Player 角色与 SpawnLocation 接触,玩家的 Player.TeamColor 将设置为 SpawnLocation.TeamColor .Player.Neutral 也将在联系时设置为SpawnLocation.Neutral,这意味着玩家也可以通过触摸生成位置变得中立。
当 SpawnLocation.Enabled 设置为 false 时,将无法运行。
制定检查点
此功能经常用于在障碍赛或类似游戏中制定检查点。
代码示例
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
Duration
在秒内,一个 ForceField 将被应用到在这个 Player 中生成的角色上,一个 SpawnLocation 角色。如果持续时间为零,ForceField 将永远不会创建,也不会触发 Instance.DescendantAdded 或 Instance.ChildAdded 事件。
此属性的默认值为 10 秒。
持续时间功能允许开发人员轻松提供Players保护,这可能是玩家感到挫折的经历。注意, 只会保护用户免受 和使用 来造成伤害或其他检查的武器。
代码示例
This sample will create a neutral SpawnLocation in the Workspace that'll give players spawning a ForceField for 20 seconds.
local spawnLocation = Instance.new("SpawnLocation")
spawnLocation.Anchored = true
spawnLocation.Size = Vector3.new(5, 1, 5)
spawnLocation.Neutral = true -- anyone can spawn here
spawnLocation.Duration = 20
spawnLocation.Parent = workspace
Enabled
设置是否启用 SpawnLocation 。禁用玩家时无法在 SpawnLocation 生成,并且 SpawnLocation.AllowTeamChangeOnTouch 功能被禁用。
该属性提供了最方便的方法来防止 Players 在生重生点中生成。
注意,尽管在触摸时使用 SpawnLocation.AllowTeamChangeOnTouch 更改团队时已禁用,其他使用 BasePart.Touched 的触摸事件仍会发触发。
代码示例
The following sample will create a SpawnLocation in the Workspace that will become semi-transparent when it is disabled.
local spawnLocation = Instance.new("SpawnLocation")
spawnLocation.Anchored = true
spawnLocation.Size = Vector3.new(5, 1, 5)
spawnLocation.Neutral = true -- anyone can spawn here
spawnLocation.Enabled = true
spawnLocation.Parent = workspace
local function onEnabledChanged()
spawnLocation.Transparency = spawnLocation.Enabled and 0 or 0.5
end
spawnLocation:GetPropertyChangedSignal("Enabled"):Connect(onEnabledChanged)
task.wait(5)
spawnLocation.Enabled = false -- transparency = 0.5
Neutral
是否生成是否与特定团队相关。这意味着任何 Player , 任何 Team , 如果此属性设置为真,都可以在上面生成 if this property is set to true。
如果中立设置为 false,只有那些玩家的 Player.TeamColor 与 SpawnLocation.TeamColor 相等的玩家才能使用 SpawnLocation 。
如果 SpawnLocation.AllowTeamChangeOnTouch 是真的,Player.Neutral 将在与生成联系时设置为此属性。
代码示例
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)
TeamColor
团队颜色属性设置 SpawnLocation 是哪个团队附属。如果 SpawnLocation.Neutral 属性为 false,只有 Players 与重生点的团队颜色相同的 Player.TeamColor 才能在那里生成。
如果 SpawnLocation.AllowTeamChangeOnTouch 是真的,Player.Neutral 将在与生成联系时设置为此属性。
代码示例
This sample demonstrates how SpawnLocations can be used to make a checkpoint system. Typically this would be done Studio and not in Lua, but this example serves as a comprehensive example of what Team and SpawnLocation properties need to be used to achieve this setup.
local Teams = game:GetService("Teams")
-- create start team (AutoAssignable = true)
local startTeam = Instance.new("Team")
startTeam.Name = "Start"
startTeam.AutoAssignable = true
startTeam.TeamColor = BrickColor.new("White")
startTeam.Parent = Teams
-- create checkpoint teams (Autoassignable = false), ensuring all TeamColors are unique
local team1 = Instance.new("Team")
team1.Name = "Checkpoint 1"
team1.AutoAssignable = false
team1.TeamColor = BrickColor.new("Bright blue")
team1.Parent = Teams
local team2 = Instance.new("Team")
team2.Name = "Checkpoint 2"
team2.AutoAssignable = false
team2.TeamColor = BrickColor.new("Bright green")
team2.Parent = Teams
local team3 = Instance.new("Team")
team3.Name = "Checkpoint 2"
team3.AutoAssignable = false
team3.TeamColor = BrickColor.new("Bright red")
team3.Parent = Teams
-- create spawns
local startSpawn = Instance.new("SpawnLocation")
startSpawn.Anchored = true
startSpawn.Size = Vector3.new(5, 1, 5)
startSpawn.Neutral = false
startSpawn.AllowTeamChangeOnTouch = false
startSpawn.TeamColor = startTeam.TeamColor
startSpawn.BrickColor = startTeam.TeamColor
startSpawn.Parent = game.Workspace
local team1Spawn = Instance.new("SpawnLocation")
team1Spawn.Anchored = true
team1Spawn.Size = Vector3.new(5, 1, 5)
team1Spawn.Neutral = false
team1Spawn.AllowTeamChangeOnTouch = true
team1Spawn.TeamColor = team1.TeamColor
team1Spawn.BrickColor = team1.TeamColor
team1Spawn.Parent = game.Workspace
local team2Spawn = Instance.new("SpawnLocation")
team2Spawn.Anchored = true
team2Spawn.Size = Vector3.new(5, 1, 5)
team2Spawn.Neutral = false
team2Spawn.AllowTeamChangeOnTouch = true
team2Spawn.TeamColor = team2.TeamColor
team2Spawn.BrickColor = team2.TeamColor
team2Spawn.Parent = game.Workspace
local team3Spawn = Instance.new("SpawnLocation")
team3Spawn.Anchored = true
team3Spawn.Size = Vector3.new(5, 1, 5)
team3Spawn.Neutral = false
team3Spawn.AllowTeamChangeOnTouch = true
team3Spawn.TeamColor = team3.TeamColor
team3Spawn.BrickColor = team3.TeamColor
team3Spawn.Parent = game.Workspace
-- position spawns
startSpawn.CFrame = CFrame.new(0, 0.5, 0)
team1Spawn.CFrame = CFrame.new(10, 0.5, 0)
team2Spawn.CFrame = CFrame.new(20, 0.5, 0)
team3Spawn.CFrame = CFrame.new(30, 0.5, 0)