Recoger artículos

*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 lo encuentren en el mundo.A continuación se muestra un video del proceso de recolección de artículos de los jugadores.

Construir un objeto

Los elementos 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 una cantidad limitada de tiempo.

Para el objeto, vuelve a tu documento de diseño del juego. 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 agregarla, haga clic derecho en el espacio de trabajo y seleccione Insertar desde el archivo .

  2. Si usa su propia parte, agrupe todas las piezas 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 tus partes.

  3. Asegúrate de que las piezas estén todas ancladas .

  4. Así que los artículos no se pueden cosechar mientras desaparecen, crea un Valor de Bool llamado CanHarvest para rastrear su estado.

  5. En Propiedades para CanHarvest, compruebe la casilla Valor . Comprobar la caja de caja delimitadorahace que el valor sea verdadero, lo que significa que los jugadores pueden cosechar el objeto.

Crear una herramienta

Los jugadores necesitan algo como un hacha o una pala para recolectar artículos con.En Roblox, los artículos que los jugadores pueden equipar y utilizar 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ñade la herramienta

Para que los jugadores usen la herramienta de inicio, descárguela y colóquela en el paquete de inicio.

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

  2. En Explorer, bajo Workspace, haz clic derecho en StarterPack. Luego, selecciona Insertar desde 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 guardar la herramienta.Haga clic izquierdo para balancearlo.

Codifica la herramienta

Si la herramienta golpea un objeto recolectable y el jugador tiene suficiente espacio en su bolsa, el recuento de artículos del jugador aumenta en 1 en la tabla de clasificación.Recolectar un artículo lo hace desaparecer durante unos segundos y se vuelve insalvable durante unos segundos antes de reaparecer.Esto alienta a los jugadores a explorar para encontrar más artículos, en lugar de simplemente hacer clic en el mismo artículo.

Configurar el script

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

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

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


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

Compruebe los artículos

Cada vez que la herramienta toca un objeto, comprueba si ese objeto tiene CanHarvest dentro y si el booleano está establecido en True.

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


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Ahora el script debe verificar si realmente se encontró algo y, si es así, ejecutar el código.Para hacer esto, crea una declaración if en la que la condición sea canHarvest.Si existe algo en canHarvest , esta declaración se evaluará como verdadera.


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


    if canHarvest then
    -- Se usa para probar si el código funciona
    print("Found an item")
    end
  5. Bajo la declaración de la función end, añade toolPart.Touched:Connect(onTouch).Esto permite que el script verifique si algo está tocando la herramienta (o en este caso, su controlador) y, si es así, llame a onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Reproduce el proyecto y usa la herramienta en un elemento recolectable (haz clic izquierdo para balancear). 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, prueba los siguientes consejos.

  • Si está utilizando piezas y mallas personalizadas, es posible obtener un error.El script solo funciona si el objeto CanHarvest es un hijo de la parte que el herramienta está tocando.
  • Asegúrate de que la herramienta esté en el paquete de inicio, no en el espacio de trabajo.
  • Compruebe que la parte está anclada.

Obtener estadísticas de jugadores

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, haz que el jugador use 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 artículos y espacios


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

Compruebe si hay un objeto recolectable

Ahora que el script de la herramienta tiene las variables playerItems y playerSpaces creadas, puedes comenzar a darle a los jugadores un artículo.Usa 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 artículos mostrados en la tabla de clasificación en uno.

  1. El script necesitará una declaración if con dos condiciones que cumplir.Comience por crear una declaración if, luego agregue 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 declaración if, añade 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 verificar que el número de artículos aumentó.

Restablecer el objeto

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

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

El artículo luego 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 se restablecen los originales.

  1. Debajo de donde se agreguen los elementos, establece canHarvest en falso.Al hacer que el valor de canHarvest false sea falso tan pronto como los jugadores cosechen el objeto, el script no dará más de un artículo 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, establece 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 al artículo para restablecerse. 5 es un número sugerido, y tal vez difiera por el tiempo que desea 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, haz lo contrario del código anterior, al establecer el CanHarvest en verdadero y restablecer la transparencia y el 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 controles no pasó, prueba uno de los siguientes a continuación.

  • Asegúrate de que Transparencia y CanCollide estén escritos y capitalizados exactamente.
  • Asegúrese de usar canHarvest.Value y no canHarvest = true.

Script de herramienta completo

Una versión terminada del script se puede referenciar 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
-- Reiniciar partTouched, el objetocosechado
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Hacer que el artículo cosechado reaparezca y sea de nuevo utilizable
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)