Armadilhas que diminuem a saúde dos jogadores são um elemento divertido de jogo que pode ser codificado com declarações condicionais.Pratique usando condicionais criando uma parte que define a saúde do jogador como zero quando tocada.
Configure a armadilha
Armadilhas funcionam de forma excepcionalmente bem em experiências com desafios baseados em movimento, como obbies.Esses passos começarão configurando as variáveis e funções necessárias.Faça o máximo que puder sem olhar primeiro para as caixas de código.
Crie e nomeie uma parte de armadilha. Insira um script na parte.
No script, adicione um comentário descritivo e depois use uma variável para referenciar o pai do script.
-- Se um jogador tocar nesta parte, defina sua saúde para 0local trapPart = script.ParentCrie uma função chamada onTouch() com um parâmetro chamado otherPart .
-- Se um jogador tocar nesta parte, defina sua saúde para 0local trapPart = script.Parentlocal function onTouch(otherPart)endConecte a função ao evento da parte de armadilha Touched para executar sempre que algo tocar a parte.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Verifique o toque do jogador
Lembre-se, o parâmetro otherPart grava qualquer toque que chegue à parte da armadilha, que pode ser uma parte de um jogador ou apenas a Placa base.
Para garantir que a armadilha só destruirá jogadores e não destruirá itens de decoração aleatórios, use uma declaração if/then para verificar se o que estiver em otherPart contém um ObjetoHumanoide.
Encontre um Objetoespecífico
A função FindFirstChildWhichIsA() pode ser usada para procurar tipos de objetos específicos, o que é útil porque estamos procurando um Objetodo tipo Humanoide.Os jogadores provavelmente tocarão na armadilha com apenas uma parte de seu avatar, então uma variável deve ser configurada para encontrar o pai da parte tocante e pesquisá-la por um Humanoide.
Em onTouch(), digite local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Encontra o Objetopai da outra partelocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Verifique se character tem um Humanoid digitando:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Verifique com uma declaração if
Se um Humanoide for encontrado, então defina a saúde do Humanoide para zero.
Use uma declaração if para verificar se um Humanoide foi atribuído com sucesso a local humanoid.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Avalia se um Humanoide foi encontradoif humanoid thenendendtrapPart.Touched:Connect(onTouch)Adicione uma declaração de impressão e verifique o código até agora.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Avalia se um Humanoide foi encontradoif humanoid thenprint("Found a Humanoid")endendtrapPart.Touched:Connect(onTouch)Executar o código e verificar se você pode ver a saída sempre que um jogador toca na peça.
Mude a saúde do jogador
Se a declaração for verdadeira, você pode usar a mesma variável humanoide para definir a saúde do jogador para 0.
Entre then e end, digite humanoid.Health = 0.
scriptconcluídolocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Avalia se um Humanoide foi encontradoif humanoid thenprint("Found a Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Teste a armadilha.
Sumário
Esta parte da armadilha usou condicionais para detectar partes Humanóides e definir a saúde do Humanóide para zero.Este script é uma melhoria no script de armadilha anterior, que destruía qualquer objeto tocante, não importa o que fosse.
No entanto, ainda tem algumas falhas.Humanóides não estão apenas em jogadores.Humanóides também são encontrados em personagens não jogáveis.O script também só é bom em definir a saúde do jogador para zero.Você pode experimentar subtrair uma pequena quantidade de saúde, mas é provável que subtraia a saúde mais rapidamente do que desejado.As lições posteriores fornecem melhorias adicionais para dar maior controle sobre quanta saúde é subtraída dos jogadores.