Na Introdução à programação, você aprendeu como fazer mudanças em uma experiência em um loop ao longo do tempo. E se você quiser fazer mudanças com base no comportamento do usuário? Neste tutorial, você aprenderá como criar um chão de lava mortal que mata os usuários quando eles pisam nele.
Configurar
Você precisa de um espaço em seu mundo para colocar a lava mortal. Se você seguiu o curso de Introdução à programação, o chão de lava se encaixaria perfeitamente na lacuna coberta pelas plataformas que desaparecem.
Insira uma Part e mova-a para o lugar em seu mundo. Nomeie-a como LavaFloor.
Redimensione-a para cobrir o chão do espaço envolvente.

Faça o chão parecer mais como lava definindo a propriedade Material como Neon e a Color como um tom de laranja.


Insira um Script na parte LavaFloor e renomeie-o para Kill.

Remova o código padrão e crie uma variável para a lava.
local lava = script.Parent
Conectar a um evento
Use um evento para detectar quando um usuário toca a lava. Cada parte tem um evento Touched que é ativado quando algo a toca. Você pode conectar-se a este evento para executar uma função quando ele for acionado.
Declare uma nova função chamada kill.
Acesse o evento Touched no objeto lava usando um ponto, assim como uma propriedade: lava.Touched.
Chame a função Connect no evento Touched, passando kill() como a função a ser chamada quando a parte for tocada.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Qualquer código que você escrever na função kill será executado sempre que algo tocar a lava. Note que uma dois-pontos é usada para a função Connect, não um ponto - não se preocupe com a razão neste momento, apenas lembre-se da diferença.
Obter a parte em contato
Para matar o usuário, a função precisará de um objeto associado a esse usuário. O evento Touched de uma parte pode fornecer a "outra parte" que a tocou — mas somente se você solicitar isso fazendo dela um parâmetro da função.
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 assim como qualquer outra variável. Você pode passar informações para um parâmetro incluindo-o nos parênteses quando uma função é chamada. Os parâmetros são definidos entre parênteses na primeira linha de uma função. Crie um parâmetro chamado otherPart para a função kill.
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 chão de lava, e o código que você escrever na função poderá usá-lo.
Personagem e humanoide
Quando um usuário toca a lava, o Roblox pode detectar a parte do corpo específica do usuário que a tocou, como a perna esquerda ou o pé direito. Esta parte está no modelo Character 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 tronco.
- Quaisquer roupas e acessórios usados pelo usuário.
- O Humanoid, um objeto especial que contém muitas propriedades relacionadas ao usuário, incluindo a saúde do usuário.
- O HumanoidRootPart que controla o movimento do usuário.
Como mencionado anteriormente, qualquer parte do corpo que toca a lava é parte do modelo Character, então você pode obter uma referência a esse personagem com otherPart.Parent. Crie uma variável para armazenar o pai da parte que tocou o chão de lava.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
Do modelo do personagem, você precisará obter o objeto Humanoid para poder matar o usuário. Você pode fazer isso com a função FindFirstChild() — basta passar o nome da coisa que você está procurando e ela fornece o primeiro filho correspondente que encontra nesse objeto. Chame FindFirstChild() na variável partParent com "Humanoid" como o filho a ser encontrado, e armazene o resultado em uma nova variável chamada humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Verificar o humanoide
Você pode facilmente verificar se o Humanoid foi encontrado usando uma declaração if. O código em uma declaração if só será executado se a condição definida na primeira linha for verdadeira.
Existem uma variedade de operadores que podem ser usados para construir condições mais complexas que você encontrará em cursos futuros - por enquanto, apenas coloque a variável humanoid lá. Crie uma declaração if com humanoid 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)
Definir a saúde do personagem
Agora que o Humanoid foi verificado, suas propriedades podem ser alteradas. Se você definir sua propriedade Health como 0, o Character associado morre. No corpo da declaração if, defina a propriedade Health do humanoide como 0.
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 chão de lava está completo! Teste sua experiência e você deve descobrir que sua lava mortal mata os usuários ao contato. 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)