Coletando Itens

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

Com o placar criado, 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 coleta de itens dos jogadores.

Construir um Item

Os itens da experiência são modelos 3D que os jogadores usam uma ferramenta para colher. Cada item, uma vez coletado, desaparece e depois reaparece após um tempo limitado.

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

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

    Se desejar, faça o download da parte de cristal com este link. Para adicioná-lo, clique com o botão direito do mouse no Workspace e selecione Insert from File .

  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 estejam todas ancoradas .

  4. Para que os itens não possam ser colhidos enquanto desaparecem, crie um BoolValue chamado CanHarvest para rastrear seu status.

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

Criando uma Ferramenta

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

Adicionando a ferramenta

Para que os jogadores usem a ferramenta inicial, baixe-a e coloque-a no StarterPack.

  1. Faça o download da ferramenta inicial abaixo.

  2. No Explorador, em Workspace, clique com o botão direito do mouse no StarterPack. Em seguida, selecione Insert from File .

  3. Selecione o arquivo baixado, starterTool.rbxm .

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

Codificando a Ferramenta

Se a ferramenta atingir um objeto colhível e o jogador tiver espaço suficiente em sua bolsa, a contagem de itens do jogador aumenta em 1 na tabela de classificação. Colher um item faz com que ele desapareça por alguns segundos e se torne não colhí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.

Configurando o Script

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

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

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


    -- Dá aos jogadores um item quando eles tocam uma parte colhível
    local tool = script.Parent
    local toolPart = tool.Handle

Verificando itens

Sempre que a ferramenta toca em um Objeto, 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 . Em seguida, use a função FindFirstChild() para ver se há um booleano CanHarvest 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 houver, correr o código. Para fazer isso, crie uma declaração if onde a condição é canHarvest. Se algo existir em canHarvest, essa declaração será avaliada como true.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Na instrução if, adicione uma instrução print 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 instrução end da função, ConnecttoolPart.Touched:Connect(onTouch) . Isso permite que o script verifique se algo está tocando a ferramenta (ou, neste caso, sua 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 colhível (clique com o botão esquerdo para balançar). Certifique-se de ver a mensagem "Encontrei um item" na janela de saída.

Dicas de solução de problemas

Se você não vir a mensagem, tente as 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 um filho da parte que a ferramenta está tocando.
  • Certifique-se de que a ferramenta esteja no StarterPack, não na área de Workspace.
  • Verifique se a peça está ancorada.

Obtendo 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 a contagem de itens desse jogador.

  1. Primeiro, pegue o jogador usando a ferramenta. No ToolScript, em 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 de liderança 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. Em local playerStats, crie variáveis para armazenar as estatísticas dos itens e espaços.


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

Verificando se há um objeto colhí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 na 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 e adicione nas seguintes condições, conectadas à 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 verificar se a contagem de itens aumentou.

Resetando o Item

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

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

O item então voltará ao normal após pouco tempo. Desta forma, os jogadores só recebem um item por cada colheita, e precisam procurar mais enquanto o original é redefinido.

  1. Em onde os itens são adicionados, defina canHarvest como falso. Ao tornar o valor de canHarvest falso assim que os jogadores colherem o item, o script não dará mais de um item por golpe 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 em falso, defina a Transparência da peça em 1 (invisível) e CanCollide em 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 redefinir. 5 é um número sugerido, e talvez difera por quanto tempo você gostaria para 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, configurando o CanHarvest como 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 por colher um item.
    • O item desaparece e depois reaparece após cinco segundos.

Dicas de solução de problemas

Neste ponto, se um dos cheques não passar, tente um dos seguintes.

  • Verifique se a Transparência e o CanCollide estão ortografados e escritos com precisão.
  • Certifique-se de usar canHarvest.Value e não canHarvest = true.

ToolScript Completo

Uma versão finalizada 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 parteTocada, o item colhido
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Faça com que o item coletado reapareça e seja utilizável novamente
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)