Recolher itens

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Com a tabela de classificação criada, os jogadores precisam de algo para coletar.Para isso, você precisa criar um item 3D para os jogadores encontrarem no mundo.Abaixo está um vídeo do processo de os jogadores colherem itens.

Construir um item

Itens na experiência são modelos 3D que os jogadores usam uma ferramenta para coletar.Cada item, uma vez colhido, desaparece e depois reaparece depois de um tempo limitado.

Para o item, volte ao seu documento de design de jogo. Esta série usa cristais como exemplo.

  1. Crie um Objeto, usando peças ou objetos encontrados por usuários confiáveis no Mercado.

    Se desejar, baixe a parte de cristal com este link . Para adicioná-la, clique com o botão direito no Espaço de Trabalho e selecione Inserir do Arquivo .

  2. Se estiver usando sua própria peça, agrupe todas as peças em um Modelo .Uma maneira de fazer isso é selecionar todos os itens, clicar com o botão direito em uma peça e selecionar Grupo .Isso cria um modelo que organiza suas peças.

  3. Certifique-se de que as peças estão todas ancoradas .

  4. Assim, itens não podem ser colhidos enquanto desaparecem, crie um BoolValue chamado CanHarvest para rastrear seu status.

  5. Em Propriedades para CanHarvest, verifique a caixa Valor . Verificar a caixa de valor torna o booleano verdadeiro, o que significa que os jogadores podem colher o item.

Criar uma ferramenta

Os jogadores precisam de algo como um machado ou uma pá para coletar itens com.No Roblox, itens que os jogadores podem equipar e usar são chamados de ferramentas .Esta lição usa uma ferramenta inicial com todas as peças e uma animação já feita que você pode personalizar mais tarde.

Adicione a ferramenta

Para que os jogadores usem a ferramenta inicial, baixem e coloquem-na no StarterPack.

  1. Baixe a ferramenta inicial abaixo.

  2. No Explorador, sob Workspace, clique com o botão direito no StarterPack. Em seguida, selecione Inserir do Arquivo .

  3. Selecione o arquivo baixado, starterTool.rbxm .

  4. Teste o seu projeto.Os jogadores devem ser equipados com a ferramenta assim que iniciar.No jogo, pressione 1 para equipar ou guardar a ferramenta.Clique com o botão esquerdo para balançá-lo.

Codificar a ferramenta

Se a ferramenta atingir um objeto colhível e o jogador tiver espaço suficiente em sua bolsa, o número de itens do jogador aumenta em 1 na tabela de classificação.Coletar um item faz com que ele desapareça por alguns segundos e se torne incoletável por alguns segundos antes de reaparecer.Isso incentiva os jogadores a explorar para encontrar mais itens, em vez de apenas clicar no mesmo item.

Configure o script

Neste ponto, adicione um script à ferramenta. Este script lida com o que acontece quando a ferramenta toca um Objetocolhível.

  1. No StarterPack, sob StarterTool, adicione um novo script chamado ToolScript.

  2. No script, escreva um comentário descritivo no topo e, em seguida, crie variáveis para armazenar a peça da ferramenta e a própria ferramenta.


    -- Dá aos jogadores um item quando eles tocarem em uma parte colatável
    local tool = script.Parent
    local toolPart = tool.Handle

Verifique os itens

Sempre que a ferramenta toca em um Objeto, ela verifica se esse objeto tem CanHarvest dentro e se o booleano está definido como Verdadeiro.

  1. Crie uma nova função chamada onTouch() com um parâmetro chamado partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. Nessa função, crie uma variável local chamada canHarvest .Então, use a função FindFirstChild() para ver se há o CanHarvest booleano no pai dessa parte.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Agora o script precisa verificar se houve realmente algo encontrado e, se sim, execute o código.Para fazer isso, crie uma declaração if onde a condição é canHarvest .Se alguma coisa existir em canHarvest, esta declaração se avalia como verdadeira.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Na declaração if, adicione uma declaração de impressão para ver se o script está funcionando. Você pode codificar a lógica para coletar itens depois de ter certeza de que funciona.


    if canHarvest then
    -- Usado para testar se o código funciona
    print("Found an item")
    end
  5. Sob a declaração da função end, adicione toolPart.Touched:Connect(onTouch).Isso permite que o script verifique se algo está tocando a ferramenta (ou neste caso, seu Manipulador / alça) e, se sim, chame onTouch().


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Jogue o projeto e use a ferramenta em um item colocável (clique com o botão esquerdo para balançar). Certifique-se de ver a mensagem "Encontrou um item" na janela de Saída.

Dicas de solução de problemas

Se você não vir a mensagem, tente os seguintes dicas.

  • Se você estiver usando peças e malhas personalizadas, é possível obter um erro.O script só funciona se o objeto CanHarvest for filho da peça que a ferramenta está tocando.
  • Certifique-se de que a ferramenta está no StarterPack, e não no Workspace.
  • Verifique se a peça está ancorada.

Obter estatísticas do jogador

Antes de aumentar os itens do jogador, a ferramenta deve encontrar a localização de quantos itens um jogador tem na tabela de classificação desse jogador.Uma vez que a ferramenta tenha acesso à tabela de classificação, ela pode alterar o número de itens desse jogador.

  1. Primeiro, obtenha o jogador usando a ferramenta. No ToolScript, abaixo de local item = toolitem e acima da função personalizada, digitar:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Na próxima linha, encontre as estatísticas do jogador usando a função FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Abaixo de local playerStats, crie variáveis para armazenar as estatísticas de itens e espaços


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

Verifique um Objetocolatável

Agora que o script da ferramenta tem as variáveis playerItems e playerSpaces criadas, você pode começar a dar aos jogadores um item.Use a função criada para verificar se o objeto que toca a ferramenta pode ser colhido e se o jogador tem espaço suficiente em sua bolsa para aumentar os itens mostrados na tabela de classificação em um.

  1. O script precisará de uma declaração if com duas condições a serem atendidas.Comece criando uma declaração if, em seguida, adicione as seguintes condições, conectadas com a palavra-chave 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. Na própria declaração if, adicione aos itens do jogador digitando playerItems.Value += 1.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Jogue seu projeto; use sua ferramenta para colher um item e verifique se o número de itens aumentou.

Redefina o item

Quando o item for colhido, ele será redefinido de duas maneiras:

  • O item desaparecerá e não será interativamente
  • CanHarvest definido como falso

O item então voltará ao normal após um curto período de tempo.Dessa forma, os jogadores recebem apenas um item por cada colheita e precisam olhar ao redor para mais enquanto os originais são redefinidos.

  1. Abaixo onde os itens são adicionados, defina canHarvest para falso.Ao fazer o valor de canHarvest falso assim que os jogadores colherem o item, o script não dará mais de um item por acerto de ferramenta.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Depois de definir o valor para falso, defina a Transparência da peça para 1 (invisível) e CanCollide para falso, o que significa que os jogadores não podem tocá-la.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Digite task.wait(5) para dar tempo para o item ser redefinir. 5 é um número sugerido e talvez diferir por quanto tempo você gostaria de sua experiência.


    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. Após a espera, faça o oposto do código anterior, definindo o CanHarvest para verdadeiro e redefinindo a Transparência e o CanCollide para seus valores originais.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Jogue o projeto e verificar / conferir:

    • O jogador só recebe 1 item para colher um item.
    • O item desaparece e então reaparece depois de cinco segundos.

Dicas de solução de problemas

Neste ponto, se uma das verificações não passar, tente uma das seguintes abaixo.

  • Verifique se Transparência e CanCollide estão escritos e capitalizados exatamente.
  • Certifique-se de usar canHarvest.Value e não canHarvest = true.

Script de Ferramenta Completo

Uma versão final do script pode ser referenciada abaixo.


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
-- Redefinir partTouched, o item coletado
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Faça o item coletado reaparecer e usável novamente
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)