En Introducción a la programación, aprendiste a hacer cambios en una experiencia en un bucle a lo largo del tiempo. ¿Qué pasa si deseas hacer cambios basados en el comportamiento del usuario? En este tutorial, aprenderás a crear un suelo de lava mortal que mata a los usuarios cuando pisan sobre él.
Configurar
Necesitas un lugar en tu mundo para colocar la lava mortal. Si seguiste el curso de Introducción a la programación, el suelo de lava se ajustaría perfectamente en el espacio cubierto por las plataformas que desaparecen.
Inserta una Parte y muévela a su lugar en tu mundo. Nómbrala LavaFloor.
Redimensiona la parte para que cubra el suelo del espacio que contiene.

Haz que el suelo se parezca más a lava estableciendo la propiedad Material a Neon y el Color a un tono naranja.


Inserta un Script en la parte LavaFloor y renómbralo a Kill.

Elimina el código predeterminado y crea una variable para la lava.
local lava = script.Parent
Conectar a un evento
Usa un evento para detectar cuando un usuario toca la lava. Cada parte tiene un evento Touched que se activa cuando algo la toca. Puedes conectarte a este evento para ejecutar una función cuando se activa.
Declara una nueva función llamada kill.
Accede al evento Touched en el objeto lava utilizando un punto, al igual que una propiedad: lava.Touched.
Llama a la función Connect en el evento Touched, pasando kill() como la función a ejecutar cuando la parte es tocada.
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
Cualquier código que escribas en la función kill ahora se ejecutará cada vez que algo toque la lava. Ten en cuenta que se utiliza un dos puntos para la función Connect, no un punto; no te preocupes por el porqué en este momento, solo recuerda la diferencia.
Obtener la parte tocante
Para matar al usuario, la función necesitará un objeto asociado con ese usuario. El evento Touched de una parte puede proporcionar la "otra parte" que la tocó, pero solo si lo solicitas haciéndolo un parámetro de la función.
Los parámetros son definiciones de lo que una función espera recibir cuando se llama. Un parámetro puede usarse en una función como cualquier otra variable. Puedes pasar información a un parámetro incluyéndola en los paréntesis cuando se llama a una función. Los parámetros se definen en los paréntesis en la primera línea de una función. Crea un parámetro llamado otherPart para la función kill.
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
Cuando se llama a la función kill, el parámetro otherPart representará la parte que tocó el suelo de lava, y el código que escribas en la función podrá usarlo.
Personaje y humanoide
Cuando un usuario toca la lava, Roblox puede detectar la parte específica del cuerpo del usuario que la tocó, como la pierna izquierda o el pie derecho. Esta parte está en el modelo de Personaje del usuario, que contiene todos los objetos que forman el avatar del usuario en la experiencia, incluidos:
- Las partes individuales del cuerpo del usuario, como la cabeza, los miembros y el torso.
- Cualquier ropa y accesorio que use el usuario.
- La Humanoid, un objeto especial que contiene muchas propiedades relacionadas con el usuario, incluyendo la salud del usuario.
- La HumanoidRootPart que controla el movimiento del usuario.
Como se mencionó anteriormente, cualquier parte del cuerpo que toque la lava es parte del modelo de Personaje, por lo que puedes obtener una referencia a ese personaje con otherPart.Parent. Crea una variable para almacenar el padre de la parte que tocó el suelo de lava.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
Desde el modelo de personaje, necesitarás obtener el objeto Humanoid para matar al usuario. Puedes hacerlo con la función FindFirstChild(); solo pasa el nombre de lo que buscas y proporciona el primer hijo coincidente que encuentra en ese objeto. Llama a FindFirstChild() en la variable partParent con "Humanoid" como el hijo que buscar, y almacena el resultado en una nueva variable llamada humanoid.
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
Verificar el humanoide
Puedes verificar fácilmente si se encontró el Humanoid utilizando una instrucción if. El código en una instrucción if solo se ejecutará si la condición definida en la primera línea es verdadera.
Hay una variedad de operadores que se pueden usar para crear condiciones más complejas que encontrarás en cursos futuros; por ahora, solo coloca la variable humanoid allí. Crea una instrucción if con humanoid como la condición.
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)
Establecer la salud del personaje
Ahora que se ha verificado la Humanoid, sus propiedades pueden ser cambiadas. Si estableces su propiedad Health a 0, el Personaje asociado morirá. En el cuerpo de la instrucción if, establece la propiedad Health del humanoide a 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)
¡Con eso, tu suelo de lava está completo! Prueba tu experiencia y deberías encontrar que tu lava mortal mata exitosamente a los usuarios al contacto. Intenta usar tu lava como un desafío extra en un obby, o como un límite para un 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)