Recogiendo Objetos

*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 artículo 3D para que los jugadores encuentren en el mundo. A continuación se muestra un video del proceso de recolección de artículos por parte de los jugadores.

Construir un Objeto

Los artículos en la experiencia son modelos 3D que los jugadores usan una herramienta para cosechar. Cada objeto, una vez cosechado, desaparece y luego reaparece después de un tiempo limitado.

Para el objeto, consulte el documento de diseño de su juego. Esta serie usa cristales como ejemplo.

  1. Crea un objeto, ya sea usando partes u objetos encontrados por usuarios de confianza en el Mercado.

    Si lo desea, descargue la parte de cristal con este enlace. Para agregarlo, haga clic derecho en el área de trabajo y seleccione Insertar del archivo .

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

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

  4. Para que los artículos no se puedan cosechar mientras desaparecen, crea un BoolValue llamado CanHarvest para rastrear su estado.

  5. En Propiedades para CanHarvest, marca la caja delimitadora Valor . Marcar la casilla de valor hace que la booleana sea verdadera, lo que significa que los jugadores pueden cosechar el objeto.

Creando una herramienta

Los jugadores necesitan algo como un hacha o una pala para recolectar objetos. 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.

Añadiendo la herramienta

Para que los jugadores puedan usar la herramienta inicial, descárguela y colóquela en el Paquete Inicial.

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

  2. En el Explorador, bajo Espacio de Trabajo, haga clic derecho en StarterPack. Luego, seleccione Insertar desde Archivo .

  3. Seleccione el archivo descargado, starterTool.rbxm .

  4. Pon a prueba tu proyecto. Los jugadores deben estar equipados con la herramienta tan pronto como iniciar. En el juego, presiona 1 para equipar o desechar la herramienta. Haga clic izquierdo para balancearla.

Codificación de 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 la tabla de clasificación. Cosechar un objeto hace que desaparezca por unos segundos y se vuelva no cosechable durante unos segundos antes de reaparecer. Esto anima a los jugadores a explorar para encontrar más artículos, en lugar de solo 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, en StarterTool, añade 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 en sí.


    -- Da a los jugadores un objeto cuando tocan una parte cosechable
    local tool = script.Parent
    local toolPart = tool.Handle

Comprobando objetos

Cuando la herramienta toca un objeto, comprueba si ese objeto tiene CanHarvest dentro y si la booleana está configurada como Verdadera.

  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 llamada canHarvest . Luego, usa la función FindFirstChild() para ver si hay un Boolean de CanHarvest en el padre de esa parte.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Ahora el script necesita verificar si realmente se encontró algo y, si es así, ejecute el código. Para hacer esto, cree una sentencia if donde la condición sea canHarvest. Si existe algo en canHarvest, esta sentencia se evalúa como verdadera.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. En la sentencia if, añade una sentencia print para ver si el script está funcionando. Puedes codificar la lógica para cosechar 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 sentencia end de la función, ConnecttoolPart.Touched:Connect(onTouch). Esto permite que el script compruebe si algo está tocando la herramienta (o en este caso, su controlador) y, si es así, llama 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 objeto cosechable (haga clic izquierdo para balancear). Asegúrese de ver el mensaje "Encontró un objeto" en la ventana de salida.

Consejos para solucionar problemas

Si no ve el mensaje, pruebe los siguientes consejos.

  • Si estás usando piezas y mallas personalizadas, es posible que obtengas un error. El script solo funciona si el objeto CanHarvest es un hijo de la parte que está tocando la herramienta.
  • Asegúrate de que la herramienta esté en el StarterPack, no en el Workspace.
  • Compruebe que la parte esté anclada.

Obteniendo Estadísticas del Jugador

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

  1. Primero, busca al jugador usando la herramienta. En el ToolScript, debajo de local item = toolitem, y 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 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. En 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")

Comprobando si hay un objeto cosechable

Ahora que el script de la herramienta tiene las variables playerItems y playerSpaces creadas, puede comenzar a dar a los jugadores un objeto. Use la función creada para verificar si el objeto que toca la herramienta se puede cosechar y si el jugador tiene suficiente espacio en su bolsa para aumentar los elementos mostrados en la tabla de clasificación en uno.

  1. El script necesitará una sentencia if con dos condiciones que se cumplan. Comience creando una sentencia if, luego agregue en 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 propia sentencia if, añade a los artículos 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 comprobar que el número de artículos ha aumentado.

Reiniciando el artículo

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

  • El artículo desaparecerá y no será interactable
  • CanHarvest establecido en falso

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

  1. Bajo donde se agregan elementos, configure canHarvest como falso. Al hacer que el valor de canHarvest sea falso tan pronto como los jugadores cosechen el objeto, el script no dará más de un elemento por golpe de herramienta.


    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, configure la transparencia de la parte en 1 (invisible) y CanCollide en falso, lo que significa que los jugadores no pueden tocarla.


    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 el artículo se restablecer. 5 es un número sugerido, y tal vez difiera por cuánto tiempo le gustaría para 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, haga lo contrario al código anterior, configurando CanHarvest como true 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 objeto por cosechar un objeto.
    • El objeto desaparece y luego reaparece después de cinco segundos.

Consejos para solucionar problemas

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

  • Comprueba que Transparencia y CanCollide estén escritos con precisión y en mayúsculas.
  • Asegúrate de usar canHarvest.Value y no canHarvest = true.

Completa ToolScript

Se puede hacer referencia a una versión terminada del guión 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 reaparezca y sea utilizable de nuevo
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)