Se/então Pratique com Armadilhas

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Armadilhas que diminuem a saúde dos jogadores são um elemento divertido de jogabilidade que pode ser codificado com condições. Pratique usar condições ao criar uma parte que configura a saúde do jogador para zero quando tocada.

Configurando a Armadilha

Armadilhas funcionam 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. Fazer o máximo que puder sem olhar para as caixas de código primeiro.

  1. Crie e nomeie uma peça de armadilha. Insira um script na peça.

  2. No script, adicione um comentário descritivo e depois use uma variável para referenciar o script's pai.


    -- Se um jogador tocar esta parte, configure sua saúde para 0
    local trapPart = script.Parent
  3. Crie uma função chamada onTouch() com um parâmetro chamado otherPart.


    -- Se um jogador tocar esta parte, configure sua saúde para 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Conecte a função à Touched evento do lado da armadilha para executar sempre que algo tocar a peça.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
    trapPart.Touched:Connect(onTouch)

Verificando se o Jogador está tocando

Lembre-se, o parâmetro otherPart registra tudo o que toca a peça de armadilha, o que pode ser uma parte de um jogador ou apenas a Placa base.

Para garantir que a armadilha só destrua jogadores e não destrua itens de decoração aleatórios, use uma declaração if/then para verificar se o que estiver em otherPart contém um ObjetoHumanoide.

Encontrando um Objeto Específico

A função FindFirstChildWhichIsA() pode ser usada para procurar por tipos de objetos específicos, o que é útil, pois estamos procurando um Objetodo tipo Humanoide. Os jogadores provavelmente tocarão a armadilha com apenas uma parte de seu avatar, então uma variável deve ser configurada para encontrar o pai da parte tocada e pesquisá-lo por um Humanoide.

  1. Em onTouch(), digite local character = otherPart.Parent.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Encontra o Objetode pai de outraPeça
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Verifique se character tem um Humanoid por digitar:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid")


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    end
    trapPart.Touched:Connect(onTouch)

Verificando com uma declaração if

Se um Humanóide for encontrado, então configure a saúde do Humanóide para zero.

  1. Use uma declaração if para verificar se um Humanoid foi atribuído com sucesso para local humanoid .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Avalia se um Humanoide foi encontrado
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Adicione uma declaração de impressão e verifique o código até agora.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Avalia se um Humanoide foi encontrado
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Executar o código e verificar se você pode ver a saída sempre que um jogador tocar a peça.

Mudando a Saúde do Jogador

Se a declaração for verdadeira, você pode usar a mesma variável de humanóide para definir a saúde do jogador para 0.

  1. Entre then e end, digite humanoid.Health = 0.

    scriptconcluído

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Avalia se um Humanoide foi encontrado
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Teste a armadilha.

Visão Geral

Esta peça de armadilha usou condicionais para detectar peças humanóide e definir a saúde do humanóide para zero. Este script é uma melhora no script de armadilha anterior, que destruiu qualquer objeto tocante, não importa o que fosse.

Ainda tem alguns defeitos, no entanto. Humanóides não são apenas em jogadores. Humanóides também são encontrados em personagens não jogáveis. O script também é apenas bom para definir a saúde do jogador para zero. Você pode experimentar com subtrair uma pequena quantidade de saúde, mas é provável que subtraiam a saúde mais rápido do que desejado. As lições posteriores fornecem melhorias adicionais para dar mais controle sobre quanta saúde é sub