In Introdução ao Scripting , você aprendeu a fazer alterações em uma experiência em um loop ao longo do tempo. E se você quiser fazer alterações com base no comportamento do usuário? Neste Tutorial, você aprenderá a fazer um piso de lava mortal que mata os usuários quando eles pisam nele.
Configurando
Você precisa de um lugar no seu mundo para colocar a lava mortal. Se você seguir o curso Introdução ao Scripting, o piso de lava caberia perfeitamente no espaço coberto pelas plataformas desaparecendo.
Insira um Part e mova-o para o lugar em seu mundo. Renomeie-o para LavaFloor .
Redimensioná-lo para cobrir o chão do espaço de encerramento.
Faça o chão parecer mais como lava definindo a propriedade Material para Neon e a cor Color para uma tonalidade laranja.
Insira um Script em uma peça LavaFloor e renomeie-a para Kill.
Remova o código padrão e cria uma variável para a lava.
local lava = script.Parent
Conectando a um Evento
Use um evento para detectar quando um usuário toca a lava. Cada parte tem um evento Touched que dispara quando algo a toca. Você pode conectar a este evento para executar uma função quando ele dispara.
Declare uma nova função chamada kill .
Acesse o evento Touched no objeto de lava usando um ponto, como uma propriedade: lava.Touched .
Chame a função Connect no evento Touched, passando a função kill.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Qualquer código que você escreva na função kill agora será executado sempre que algo tocar a lava. Observe que um ponto de interrogação é usado para a função Connect, não 1> um ponto de interrogação - não se preocupe com o motivo por trás disso, apenas lembre-se da diferença.
Obtendo a Parte Sensível
Para matar o usuário, a função precisará de um objeto associado aquele usuário. Um evento de Touched da parte pode fornecer o "outro lado" que o tocou - mas apenas se você solicitar isso ao fazer dele um parâmetro da função.
Os parâmetros são definições do que uma função espera receber quando chamada. Um parâmetro pode ser usado em uma função justo como qualquer outra variável. Você pode passar informações para um parâmetro incluindo-o nas aspas quando uma função for chamada. Os parâmetros são definidos nas aspas na primeira linha de uma função. Crie um parâmetro chamado otherPart
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
Quando a função kill é chamada, o parâmetro otherPart representará a parte que tocou o piso de lava, e o código que você escreverá na função será capaz de usá-lo.
Personagem e Humanoide
Quando um usuário toca a lava, o Roblox pode detectar a parte específica do corpo do usuário que a tocou, como a perna esquerda ou direita. Esta parte está no modelo de Personagem do usuário, que contém todos os objetos que compõem o avatar do usuário na experiência, incluindo:
- As partes individuais do corpo do usuário, como a cabeça, membros e torso.
- Qualquer roupa e acessório usado pelo usuário.
- O Humanoid, um objeto especial que contém muitas propriedades relacionadas ao usuário, incluindo a saúde do usuário.
- A HumanoidRootPart que controla o movimento do usuário.
Como mencionado anteriormente, qualquer parte do corpo que toca a lava faz parte do modelo de Personagem, então você pode obter uma referência a esse personagem com otherPart.Parent. Crie uma variável para armazenar a referência da parte que tocou o piso de lava.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
Do modelo de personagem, você precisará obter o objeto Humanoide para matar o usuário. Você pode fazer isso com a função FindFirstChild(), passando-lhe o nome da coisa que você está procurando e fornecendo o primeiro filho correspondente que encontrar em ese Objeto.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Verificando o Humanoide
Você pode facilmente verificar se o Humanoid foi encontrado usando uma declaração se . O código em uma declaração se só será executado se a condição definida na primeira linha for verdadeira.
Existem uma variedade de operadores que pode ser usada para construir condições mais complexas que você encontrará em futuros cursos - para agora, basta colocar a variável humanoid lá. Crie uma declaração if com 2>humanoid2> como condição.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
Configurando a Saúde do Personagem
Agora que o Humanoid foi verificado, suas propriedades podem ser alteradas. Se você definir sua propriedade Health para 0 , o personagem associado morre. No corpo da declaração if, definir sua propriedade 1>Health1> para 4>04>, o personagem associado morre.
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
Com isso, seu piso de lava está completo! Teste sua experiência e você deve encontrar que sua lava mortal mata usuários com sucesso ao entrar em contatar. Tente usar sua lava como um desafio extra em um obby, ou como um limite para um mundo.
Código Final
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)