重生位置或“重生”决定死亡时 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 才能在那里生成。
设置对象的整体形状。
决定零件是否因物理原因无法移动。
零件装配的角速度。
零件在世界空间的质量中心。
零件装配的线速度。
零件装配的总质量。
对装配的根部分的参考。
确定零件后面的表面类型(+Z 方向)。
确定零件底面的表面类型(-Y 方向)。
决定零件的颜色。
确定世界中 BasePart 的位置和方向。
决定零件是否可能与其他零件发生碰撞。
决定零件在空间查询操作中是否被考虑。
决定是否 Touched 和 TouchEnded 事件在部分上发射。
决定零件是否投射阴影。
描述零件的质量中心所在的世界位置。
描述零件碰撞群组的名称。
决定零件的颜色。
指示零件的当前物理属性。
确定零件的几个物理属性。
用于启用或禁用零件和装配件的空气动力。
物理尺寸的 BasePart 在物理引擎中被视为实际尺寸。
确定零件前面的表面类型(-Z方向)。
确定零件左面的表面类型(-X方向)。
确定一个乘数 BasePart.Transparency ,仅对本地客户可见。
决定是否在工作室中选择零件。
描述零件的质量、密度和体积的产品。
决定零件是否会对其刚性身体的总质量或惯性贡献。
确定零件的纹理和默认物理属性。
MaterialVariant 的名称。
描述世界中零件的旋转。
指定零件的支点与其 CFrame 的偏移。
描述零件在世界上的位置。
上次记录的物理更新时间。
决定零件是否反映了天空盒。
描述由缩放方法允许的最小变更的尺寸。
描述可以调整零件大小的面。
确定零件右侧面的表面类型 (+X 方向)。
确定装配根部分的主规则。
零件在三个轴上的旋转度。
确定零件的尺寸(长度、宽度、高度)。
确定零件顶部面的表面类型 (+Y 方向)。
决定零件可以通过多少(零件不透明度的反转)。
方法
继承自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)