SpawnLocation
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Os SpawnLocations, ou "spawns", determinam onde um Player respawna quando eles morrem.Eles podem ser configurados para permitir que apenas certos jogadores usem cada Gerar, usando Teams .Eles também controlam como ForceFields são configurados para jogadores recém-gerados.
Os SpawnLocations podem ser usados como pontos de verificação, como em uma pista de obstáculos, usando a propriedade SpawnLocation.AllowTeamChangeOnTouch, para que quando um jogador tocar, ele mude de equipe para a Equipedo SpawnLocation.Neste caso, apenas o primeiro Team deve ter Team.AutoAssignable definido como verdadeiro, caso contrário, os jogadores não começarão no primeiro checkpoint.
Observe se um SpawnLocation for adicionado ao Workspace no Studio com SpawnLocation.Neutral definido como falso, uma equipe será criada correspondente a SpawnLocation.TeamColor se ainda não existir.Este comportamento não ocorre quando os spawns são criados no jogo usando um Script ou se as propriedades do SpawnLocation forem alteradas após já terem sido adicionadas.Recomenda-se que os desenvolvedores sempre configurem suas equipes manualmente e não confiem neste comportamento.
Regras de Criação
Há várias regras que entram em jogo para um determinado SpawnLocation quando um jogador renasce:
- Quando SpawnLocation.Neutral é definido como falso apenas Players com Player.TeamColor correspondendo a SpawnLocation.TeamColor respawnará acima dele
- Quando SpawnLocation.Neutral é definido como verdadeiro, qualquer Jogador pode gerar acima dele, independentemente de SpawnLocation.TeamColor
- Se vários spawns elegíveis estiverem disponíveis para um Player, um aleatório será escolhido
- Jogadores vão aparecer em diferentes pontos no topo de um SpawnLocation, mas atualmente, eles ainda podem aparecer no topo um do outro se forem gerados logo após um e outro
Veja também:
- Se você quiser configurar quanto tempo leva para um jogador reaparecer, dê uma olhada na propriedade RespawnTime
Amostras de código
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)
Resumo
Propriedades
Permite que um Player junte-se à equipe tocando o SpawnLocation.Quando definido como verdadeiro, se um personagem Player entrar em contato com o SpawnLocation, o Player.TeamColor do jogador será definido como SpawnLocation.TeamColor.
O tempo de duração, em segundos, que um ForceField será aplicado a um Player personagem que está sendo gerado neste SpawnLocation .Se a Duração for zero, o ForceField nunca é criado e não ativará os eventos Instance.DescendantAdded ou Instance.ChildAdded.
Define se o SpawnLocation está habilitado ou não.Quando os jogadores desativados não podem aparecer no SpawnLocation e a funcionalidade Permitir Mudança de Equipe ao Toque está desativada.
Se ou não um SpawnLocation está afiliado a uma Equipeespecífica.Isso significa que qualquer Player , de qualquer Team , pode aparecer nele se essa propriedade for definida como verdadeira.
Define a que equipe o SpawnLocation está afiliado.Se a propriedade SpawnLocation.Neutral for falsa, apenas Players com o mesmo Player.TeamColor que o TeamColor do Gerarserá capaz de gerar lá.
Define a forma geral do Objeto.
Determina se uma peça é imóvel pela física.
A velocidade angular da montagem da peça.
O centro de massa da montagem da peça no espaço mundial.
A velocidade linear da montagem da peça.
A massa total da montagem da peça.
Uma referência à parte raiz da montagem.
Determina se a peça vai interagir fisicamente com a simulação de áudio, semelhante a CastShadow para iluminação.
Determina o tipo de superfície para a face traseira de uma peça.
Determina o tipo de superfície para a face inferior de uma peça.
Determina a cor de uma peça.
Determina a posição e orientação do BasePart na mundo.
Determina se uma peça pode colidir com outras peças.
Determina se a peça é considerada durante as operações de consulta espacial.
Determina se Touched e TouchEnded eventos atiram na parte.
Determina se uma peça lança ou não uma sombra.
Descreve a posição mundial em que o centro de massa de uma peça está localizado.
Descreve o nome do grupo de colisão de uma peça.
Determina a cor de uma peça.
Indica as propriedades físicas atuais da peça.
Determina várias propriedades físicas de uma peça.
Usado para ativar ou desativar forças aerodinâmicas em peças e montagens.
O tamanho físico real do BasePart como considerado pelo motor de física.
Determina o tipo de superfície para a face frontal de uma peça.
Determina o tipo de superfície para a face esquerda de uma peça.
Determina um multiplicador para BasePart.Transparency que só é visível ao cliente local.
Determina se uma peça é selecionável no Studio.
Descreve a massa da peça, o produto de sua densidade e volume.
Determina se a peça contribui para a massa total ou inércia de seu corpo rígido.
Determina a textura e as propriedades físicas padrão de uma peça.
O nome de MaterialVariant .
Descreve a rotação da peça no mundo.
Specifica o deslocamento do pivô da peça de sua CFrame .
Descreve a posição da peça no mundo.
Tempo desde a última atualização de física registrada.
Determina quanto uma parte reflete a skybox.
Descreve a menor mudança de tamanho permitida pelo método Resize().
Descreve os rostos em que uma peça pode ser redimensionada.
Determina o tipo de superfície para o lado direito de uma peça.
A regra principal na determinação da parte raiz de uma montagem.
A rotação da peça em graus para os três eixos.
Determina as dimensões de uma peça (comprimento, largura, altura).
Determina o tipo de superfície para a face superior de uma peça.
Determina quanto uma peça pode ser vista através (o oposto da opacidade da peça).
Métodos
Métodos herdados de BasePartAplique um impulso angular à montagem.
Aplique um impulso à montagem na montagem center of mass .
Aplique um impulso à montagem em posição especificada.
Retorna se as peças podem colidir entre si.
Verifica se você pode definir a propriedade de rede de uma peça.
Retorna uma tabela de peças conectadas ao objeto por qualquer tipo de articulaçãorígida.
Retorne todos os Juntos ou Restrições que estão conectados a esta Parte.
Retorna o valor da propriedade Mass de retorno.
Retorna o jogador atual que é o proprietário da rede desta parte ou nil no caso do servidor.
Retorna verdadeiro se o motor de jogo decidir automaticamente o proprietário da rede para esta parte.
Retorna a parte base de uma montagem de peças.
Retorna uma tabela de todas as BasePart.CanCollide peças verdadeiras que se intersectam com esta peça.
Retorna a velocidade linear da montagem da peça na posição dada em relação a esta peça.
Retorna verdadeiro se o objeto estiver conectado a uma parte que o manterá no lugar (por exemplo, uma parte Anchored), caso contrário, retorna falso.
Muda o tamanho de um objeto assim como usar a ferramenta de redimensionamento do Studio.
Define o jogador dado como proprietário da rede para isso e todas as peças conectadas.
Permite que o motor do jogo decida dinamicamente quem vai lidar com a física da peça (um dos clientes ou do servidor).
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Cria um novo IntersectOperation a partir da geometria sobreposta da peça e das outras peças no matriz / listadado.
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Cria um novo UnionOperation a partir da peça, menos a geometria ocupada pelas peças no matriz / listadado.
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
Cria um novo UnionOperation a partir da peça, mais a geometria ocupada pelas peças no matriz / listadado.
Obtém o pivô de um PVInstance .
Transforma o PVInstance ao longo de todos os seus descendentes PVInstances de modo que o pivô agora está localizado no CFrame especificado.
Eventos
Eventos herdados de BasePartIncêndios quando uma parte para de tocar outra parte como resultado de um movimento físico.
Incêndios quando uma parte toca outra parte como resultado de um movimento físico.
Propriedades
AllowTeamChangeOnTouch
Permite que um Player junte-se à equipe tocando o SpawnLocation.Quando definido como verdadeiro, se um personagem Player entrar em contato com o SpawnLocation, o Player.TeamColor do jogador será definido como SpawnLocation.TeamColor.Player.Neutral também será definido para SpawnLocation.Neutral após o contatar, o que significa que um jogador também pode se tornar neutro ao tocar em um local de spawn.
Isso não funcionará quando SpawnLocation.Enabled estiver definido como falso.
Fazendo Pontos de Verificação
Essa característica é frequentemente usada para fazer pontos de verificação em pistas de obstáculos ou jogos semelhantes.
Amostras de código
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
O tempo de duração, em segundos, que um ForceField será aplicado a um Player personagem que está sendo gerado neste SpawnLocation .Se a Duração for zero, o ForceField nunca é criado e não ativará os eventos Instance.DescendantAdded ou Instance.ChildAdded.
Este valor padrão desta propriedade é de 10 segundos.
A característica de duração permite que os desenvolvedores dêem facilmente Players.Observe, ForceFields protegerá apenas os usuários de Explosions e armas que usam Humanoid:TakeDamage() para causar dano ou verificar de outra forma por um ForceField .
Amostras de código
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
Define se o SpawnLocation está habilitado ou não. Quando os jogadores são desativados, não podem aparecer no SpawnLocation e a funcionalidade SpawnLocation.AllowTeamChangeOnTouch é desativada.
Essa propriedade fornece a maneira mais conveniente de impedir que Players apareça em um Gerar.
Observe, embora a mudança de equipe ao tocar usando SpawnLocation.AllowTeamChangeOnTouch esteja desativada quando Ativado estiver definido como falso, outros eventos tocados usando BasePart.Touched ainda Iniciar / executar.
Amostras de código
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
Se um spawn está ou não afiliado a uma Equipeespecífica.Isso significa que qualquer Player, de qualquer Team, pode aparecer nele se essa propriedade for definida como verdadeira.
Se Neutral estiver definido como falso, apenas jogadores cujo Player.TeamColor seja igual a SpawnLocation.TeamColor podem usar o SpawnLocation.
Se SpawnLocation.AllowTeamChangeOnTouch for verdadeiro, Player.Neutral será definido para essa propriedade após o contato com o Gerar.
Amostras de código
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
A propriedade TeamColor define a que equipe o SpawnLocation está afiliado.Se a propriedade SpawnLocation.Neutral for falsa, apenas Players com o mesmo Player.TeamColor que o TeamColor do Gerarserá capaz de gerar lá.
Se SpawnLocation.AllowTeamChangeOnTouch for verdadeiro, Player.Neutral será definido para essa propriedade após o contato com o Gerar.
Amostras de código
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)