Armadilhas que diminuem a saúde dos jogadores são um elemento divertido de jogabilidade que pode ser programado com declarações condicionais. Pratique o uso de condicionais criando uma parte que define a saúde do jogador como zero quando tocada.
Configurar a armadilha
Armadilhas funcionam excepcionalmente bem em experiências com desafios baseados em movimento, como obbies. Estes passos começarão configurando as variáveis e funções necessárias. Faça o máximo possível sem olhar para as caixas de código primeiro.
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 como 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 como 0local trapPart = script.Parentlocal function onTouch(otherPart)endConecte a função ao evento Touched da parte da armadilha para ser executada 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 registra o que quer que toque a parte da armadilha, que pode ser parte de um jogador ou apenas a base.
Para garantir que a armadilha destruirá apenas jogadores e não itens de decoração aleatórios, use uma declaração if/then para verificar se o que estiver em otherPart contém um objeto Humanoid.
Encontre um objeto específico
A função FindFirstChildWhichIsA() pode ser usada para procurar tipos de objetos específicos, o que é útil porque estamos procurando um objeto do tipo Humanoid. Os jogadores provavelmente tocarão a armadilha apenas com parte de seu avatar, então uma variável deve ser configurada para encontrar o pai da parte que foi tocada e pesquisá-lo por um Humanoid.
Em onTouch(), digite local character = otherPart.Parent.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Encontra o objeto pai de otherPartlocal 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 Humanoid for encontrado, então defina a Saúde do Humanoid como zero.
Use uma declaração if para verificar se um Humanoid 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 Humanoid foi encontradoif humanoid thenendendtrapPart.Touched:Connect(onTouch)Adicione uma instruçã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 Humanoid foi encontradoif humanoid thenprint("Humanoid encontrado")endendtrapPart.Touched:Connect(onTouch)Execute o código e verifique se você pode ver a saída sempre que um jogador tocar a parte.
Mude a saúde do jogador
Se a declaração for verdadeira, você pode usar a mesma variável humanoid para definir a saúde do jogador como 0.
Entre then e end, digite humanoid.Health = 0.
Script Completolocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Avalia se um Humanoid foi encontradoif humanoid thenprint("Humanoid encontrado")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Teste a armadilha.
Resumo
Esta parte da armadilha usou condicionais para detectar partes Humanoid e definir a saúde do Humanoid como zero. Este script é uma melhoria em relação ao script de armadilha anterior, que destruía qualquer objeto que tocasse, não importando o que fosse.
No entanto, ainda há algumas falhas. Humanoides não estão apenas nos jogadores. Humanoides também são encontrados em personagens não jogáveis. O script também é bom apenas para definir a saúde do jogador como zero. Você pode experimentar subtrair uma pequena quantidade de saúde, mas é provável que subtraia a saúde mais rápido do que o desejado. As lições posteriores fornecem melhorias adicionais para dar maior controle sobre quanto de saúde é subtraído dos jogadores.