Recolectar Datos

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

Con la tabla de clasificación creada, los jugadores necesitan algo para recolectar. Para eso, necesitas crear un ítem 3D para que los jugadores encuentren en el mundo. Abajo está un video del proceso de los jugadores recolectando ítems.

Construye un elemento

Los elementos en la experiencia son modelos 3D que los jugadores usan una herramienta para recolectar. Cada objeto, una vez recolectado, desaparece y luego reaparece después de un período de tiempo limitado.

Para el objeto, consulta tu documento de diseño de juegos. Esta serie usa cristales como ejemplo.

  1. Crea un objeto, ya sea usando partes o objetos encontrados por usuarios confiables en el Mercado.

    Si lo desea, descargue la parte de cristal con este enlace >. Para agregarlo, haz clic con el botón derecho en el espacio de trabajo y selecciona Insertar desde el archivo .

  2. Si está utilizando su propia parte, agrupe todas las partes en un Modelo . Una manera de hacer esto es seleccionar todos los elementos, hacer clic con el botón derecho en una parte y seleccionar Grupo . Esto crea un modelo que organiza sus partes.

  3. Asegúrese de que todas las partes estén ancladas.

  4. Así que los elementos no se pueden cosechar mientras desaparecen, crea un Valor de BoolValue nombrado CanHarvest para rastrear su estado.

  5. En Propiedades para CanHarvest, compruebe la caja delimitadorade valor. Al marcar la casilla de valor, se hace el operador de verdad, lo que significa que los jugadores pueden cosechar el objeto.

Crear una herramienta

Los jugadores necesitan algo como un hacha o una pala para recoger objetos con. En Roblox, los objetos que los jugadores pueden equipar y usar se llaman herramientas . Esta lección usa una herramienta de inicio con todas las partes y una animación ya hecha que puedes personalizar más tarde.

Agregar la herramienta

Para que los jugadores usen la herramienta de inicio, descarguen y coloquen en el StarterPack.

  1. Descargue la herramienta de inicio a continuación.

  2. En Explorer, under Workspace, haz clic con el botón derecho en StarterPack. Luego, selecciona Insertar desde el archivo .

  3. Seleccione el archivo descargado, starterTool.rbxm .

  4. Prueba tu proyecto. Los jugadores deberían estar equipados con la herramienta tan pronto como iniciar. En el juego, presione 1 para equipar o quitar la herramienta. Haga clic izquierdo para golpearlo.

Codificando la herramienta

Si la herramienta golpea un objeto cosechable y el jugador tiene suficiente espacio en su bolsa, el número de artículos del jugador aumenta en 1 en el marcador de clasificación. Al cosechar un artículo, desaparece durante unos segundos y se vuelve no recolectable durante unos segundos antes de reaparecer. Esto fomenta a los jugadores a explorar para encontrar más artículos, en lugar de simplemente hacer clic en el mismo artículo.

Configurando el Script

En este punto, agregue un script a la herramienta. Este script maneja lo que sucede cuando la herramienta toca un objeto cosechable.

  1. En StarterPack, bajo StarterTool, agrega un nuevo script llamado ToolScript.

  2. En el script, escribe un comentario descriptivo en la parte superior, y luego crea variables para almacenar la parte de la herramienta y la herramienta misma.


    -- Da a los jugadores el artículo cuando tocan una parte cosechable
    local tool = script.Parent
    local toolPart = tool.Handle

Revisa los elementos

Cada vez que la herramienta toca un objeto, comprueba si ese objeto tiene CanHarvest dentro y si el valor deBooleano está configurado como Verdadero.

  1. Crea una nueva función llamada onTouch() con un parámetro llamado partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. En esa función, crea una variable local nombrada canHarvest . Luego, usa la función FindFirstChild() para ver si hay un valor de CanHarvest en el padre de esa parte.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Ahora el script necesita ver si había algo encontrado y, si lo hubiera, ejecutar el código. Para hacer esto, crea una declaración if donde la condición es canHarvest . Si algo existe en canHarvest, esta declaración se evaluará para ser cierto.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. En la declaración if, agregue una declaración de impresión para ver si el script está funcionando. Puede codificar la lógica para recolectar los elementos después de estar seguro de que funciona.


    if canHarvest then
    -- Usado para probar si el código funciona
    print("Found an item")
    end
  5. Bajo la declaración de la función end, agregue toolPart.Touched:Connect(onTouch) . Esto le permite al script verificar si algo está tocando la herramienta (o en este caso, su controlador) y, si es así, llamar onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Juega el proyecto y usa la herramienta en un artículo cosechable (haz clic izquierdo para mover). Asegúrate de ver el mensaje "Encontrado un objeto" en la ventana de salida.

Consejos de solución de problemas

Si no ves el mensaje, intenta lo siguiente.

  • Si está utilizando partes y mallas personalizadas, es posible que obtenga un error. El script solo funciona si el objeto CanHarvest es un hijo del objeto que la herramienta está tocando.
  • Asegúrese de que la herramienta esté en el StarterPack, no en el Workspace.
  • Asegúrese de que la parte esté anclada.

Obteniendo Estadísticas del Jugador

Antes de aumentar los elementos del jugador, la herramienta debe encontrar la ubicación de cuántos artículos tiene un jugador en esa tabla de clasificación del jugador. Una vez que la herramienta tenga acceso a la tabla de clasificación, puede cambiar el recuento de artículos de ese jugador.

  1. Primero, obtenga al jugador usando la herramienta. En el Script de herramientas, debajo de local item = toolitem y por encima de la función personalizada, introducir:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. En la siguiente línea, encuentra las estadísticas de líder del jugador usando la función FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Bajo local playerStats, crea variables para almacenar las estadísticas de los elementos y espacios.


    local playerStats = player:FindFirstChild("leaderstats")
    local playerItems = playerStats:FindFirstChild("Items")
    local playerSpaces = playerStats:FindFirstChild("Spaces")

Chequeando un objeto cosechable

Ahora que el script de herramientas tiene las variables playerItems y playerSpaces creadas, puedes comenzar a darle a los jugadores un artículo. Usa la función creada para ver si el objeto que toca el tool puede ser cosechado, y si el jugador tiene suficiente espacio en su bolsa para aumentar los elementos mostrados en la tabla de clasificación en un.

  1. El script necesitará una declaración de if con dos condiciones para cumplir. Empieza por crear una declaración de if, luego añade las siguientes condiciones, conectadas con la palabra clave and .

    • canHarvest.Value == true
    • playerItems.Value < playerSpaces.Value

    local function onTouch(partTouched)
    local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")
    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    end
    end
    end
  2. En la declaración if, agregue a los elementos del jugador escribiendo playerItems.Value += 1 .


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Juega tu proyecto; usa tu herramienta para cosechar un artículo y asegurarte de que el recuento de artículos aumentó.

Restableciendo el artículo

Cuando se coseche el artículo, se reiniciará de dos maneras:

  • El artículo desaparecerá y no se podrá interactuar
  • CanHarvest establecido a falso

El artículo volverá a la normalidad después de un corto tiempo. De esta manera, los jugadores solo obtienen un artículo por cada cosecha, y deben buscar más mientras el original se restablece.

  1. En donde se agreguen los elementos, establece canHarvest a falso. Al hacer que el valor de canHarvest sea falso tan pronto como los jugadores recolecten el objeto, el script no le dará más de un artículo por herramienta golpeada.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Después de establecer el valor en falso, establece la Transparencia de la parte a 1 (invisible), y CanCollide a falso, lo que significa que los jugadores no pueden tocarlo.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Escriba task.wait(5) para dar tiempo para que se restablecerel elemento. 5 es un número sugerido, y tal vez difiere por qué tiempo le gustaría tener su experiencia.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    task.wait(5)
    end
  4. Después de la espera, haz lo contrario del código anterior, estableciendo que CanHarvest esté en verdadero y restableciendo la Transparencia y CanCollide a sus valores originales.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Juega el proyecto y verificar, comprobar:

    • El jugador solo obtiene 1 artículo por cosechar un objeto.
    • El artículo desaparece y luego reaparece después de cinco segundos.

Consejos de solución de problemas

En este punto, si uno de los cheques no pasó, intente uno de los siguientes a continuación.

  • Asegúrese de que Transparencia y CanCollide se escriban y capitalicen exactamente.
  • Asegúrese de usar canHarvest.Value y no canHarvest = true.

Completa el script de herramientas

Una versión terminada del script se puede referir a continuación.


local toolPart = script.Parent
local tool = toolPart.Parent
local backpack = tool.Parent
local player = backpack.Parent
local playerStats = player:FindFirstChild("leaderstats")
local playerItems = playerStats:FindFirstChild("Items")
local playerSpaces = playerStats:FindFirstChild("Spaces")
local function onTouch(partTouched)
local canHarvest = partTouched:FindFirstChild("CanHarvest")
if canHarvest then
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
playerItems.Value += 1
canHarvest.Value = false
-- Restablecer parteTocada, el objetocosechado
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Haz que el artículo cosechado vuelva a aparecer y sea útil de nuevo
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)