Si/ entonces Práctica con trampas

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Las trampas que reducen la salud de los jugadores son un elemento de juego divertido que se puede codificar con declaraciones condicionales. Práctica usando declaraciones condicionales al crear una parte que establece la salud del jugador a cero cuando se toca.

Configurando la trampa

Las trampas funcionan de manera muy exitosa en experiencias con desafíos basados ​​en movimiento, como obbies. Estos pasos comenzarán configurando las variables y funciones necesarias. Haz lo que puedas sin mirar primero las cajas de código.

  1. Crea y nombra una parte de trampa. Inserta un script en la parte.

  2. En el script, agregue un comentario descriptivo y luego use una variable para referirse al padre del script.


    -- Si un jugador toca esta parte, establece su salud en 0
    local trapPart = script.Parent
  3. Crea una función llamada onTouch() con un parámetro llamado otherPart .


    -- Si un jugador toca esta parte, establece su salud en 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Conecta la función a la trampa parte Touched evento para que se ejecute siempre que algo toque la parte.


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

Checando para toque de jugador

Recuerda, el parámetro otherPart registra cualquier cosa que toque la parte de la trampa, que puede ser parte de un jugador o simplemente la placa base.

Para asegurar que la trampa solo destruya jugadores y no destruya objetos de decoración aleatorios, usa la declaración if/then para verificar si cualquier cosa en otherPart contiene un objeto humanoide.

Buscando un objeto específico

La función FindFirstChildWhichIsA() se puede usar para buscar específicos tipos de objetos, lo cual es útil porque estamos buscando un objeto de tipo humanoide. Los jugadores probablemente tocarán la trampa con solo una parte de su avatar, por lo que se debe configurar una variable para encontrar el padre del objeto tocado y buscarlo por un humanoide.

  1. En onTouch() , escribe local character = otherPart.Parent .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Encuentra el objeto padre de otra parte
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Compruebe si character tiene un Humanoid al escribir:

    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)

Comprobando con una declaración if

Si se encuentra un Humanoid, entonces establezca la Salud del Humanoid en cero.

  1. Usa una declaración if para verificar si se asignó un Humanoid a local humanoid .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Evalúa si se encontró un Humanoid
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Agregue una declaración de impresión y verifique el código hasta ahora.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Evalúa si se encontró un Humanoid
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Ejecutar el código y asegurarse de que puede ver la salida cuando un jugador toca la parte.

Cambiar la salud del jugador

Si la declaración es cierta, puede usar la misma variable humanoide para establecer la salud del jugador en 0.

  1. Entre then y end, escribe humanoid.Health = 0 .

    scriptcompletado

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Evalúa si se encontró un Humanoid
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Prueba la trampa.

Resumen

Esta parte de la trampa usó condicionales para detectar partes humanoides y establecer la salud del humanoid a cero. Este script es una mejora del script de la trampa anterior, que destruyó cualquier objeto que tocara sin importar qué era.

Sin embargo, todavía tiene algunas lagunas. Los humanoides no están solo en los jugadores. Los humanoides también se encuentran en los personajes no jugables. El script también es solo bueno para establecer la salud del jugador a cero. Puedes experimentar con restar una pequeña cantidad de salud, pero es probable que restar la salud más rápido que deseado. Las lecciones posteriores proporcionan mejoras para dar mayor control sobre la cantidad de salud que se resta a los jugadores.