Tutorial de Scripting Visual (Blocos de Lógica)
Criando um Item Colecionável
Lesson 5 of 10 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Nesta lição, vamos preparar o item que será usado como um objeto coletável no jogo.
Vamos configurar sua malha visual, aplicar um material e textura, adicionar a colisão necessária para interação com o Jogador, definir uma tag de identificação e criar uma lógica de movimento simples para tornar o item mais visível e atraente dentro da cena.
Itens coletáveis são muito comuns em jogos. Eles podem representar moedas, chaves, itens de saúde, munição, aprimoramentos, objetos de missão, ou qualquer outra coisa que o Jogador possa tocar e coletar. Nesta lição, vamos nos concentrar em preparar o item em si. Mais tarde, a lógica do Jogador poderá detectar este item e coletá-lo.
1. Criando o Item
Dentro do painel Content, crie um novo Asset do tipo Entity Template.
Este Entity Template será usado como a base para nosso item coletável. Como os itens coletáveis geralmente são reutilizados muitas vezes em um nível, criá-lo como um Entity Template é a abordagem correta. Dessa forma, você pode colocar várias instâncias do mesmo item na cena, e se você alterar o template mais tarde, todas as instâncias podem ser atualizadas a partir da mesma fonte.

Abra o Template da Entidade para que possamos editá-lo.
Em seguida, renomeie a Entidade para Item e crie uma nova Mesh, que será responsável pela representação visual do objeto.
Na seção Components, adicione um componente Transform. O Transform dá à Entidade acesso às propriedades de posição, rotação e escala, que são necessárias para posicionar e manipular o item no mundo 3D.
Depois disso, adicione também um componente Rigid Body. Este componente será responsável pelo comportamento da física e colisão do item dentro da cena.

No componente Rigid Body, habilite a opção Ghost.
Com esta opção habilitada, o item ainda poderá detectar colisões e interações, mas não bloqueará fisicamente o movimento do personagem.
Isso é exatamente o que geralmente queremos para itens coletáveis. O Jogador deve ser capaz de passar pelo item, e o jogo deve detectar esse contato como uma interação. Se o item tivesse uma colisão sólida regular, poderia bloquear o Jogador ou empurrar objetos ao redor, o que normalmente não é o comportamento desejado para coleta.

Neste ponto, você pode importar um modelo 3D para o Cave e usá-lo como a Mesh do seu item.
Neste exemplo, usaremos apenas um ícone 2D criado de uma textura, então não será necessário importar um modelo personalizado. Mas fique à vontade para personalizar a aparência visual do item como preferir, dependendo das necessidades do seu projeto.
Por exemplo, você poderia usar:
- um modelo de moeda
- um modelo de chave
- uma garrafa de poção
- um cristal flutuante
- um ícone de aprimoramento
- um plano texturizado simples
Agora, assim como criamos a Entidade antes, crie um novo Material dentro do painel Content.
Em seguida, configure-o de acordo com o estilo visual que você deseja para seu jogo, adicionando as texturas necessárias, como Albedo, Normal Map, ou quaisquer outros mapas que você queira usar.


Após configurar o material, aplique-o à Mesh do item para definir como ele aparecerá dentro da cena.
A Mesh define a forma que será renderizada, enquanto o Material define como essa forma aparecerá visualmente, incluindo sua cor, textura, rugosidade, informações normais e outras propriedades relacionadas ao shader.


Para fins de organização, o painel Content permite que você crie pastas livremente para estruturar melhor os ativos do seu projeto.
Uma boa prática é criar uma pasta chamada Item e mover todos os arquivos relacionados a este coletável para ela, como o Entity Template, materiais, texturas e quaisquer outros recursos usados por este objeto.
Manter seus ativos organizados facilita a navegação no projeto, melhora seu fluxo de trabalho e torna a manutenção muito mais simples à medida que o jogo cresce.

Agora vamos criar um novo Logic Brick para nosso item.
Este Logic Brick será responsável por adicionar uma rotação contínua ao objeto, tornando mais fácil para o jogador notar ele na cena.
Este tipo de movimento é muito comum em itens coletáveis. Um objeto completamente estático pode ser mais difícil de ver, especialmente em um ambiente movimentado. Uma rotação simples ajuda o item a se destacar e comunica imediatamente que é algo especial ou interativo.

Para fazer isso, iremos simplesmente obter a Entity e acessar seu Transform.
Em seguida, adicione o nó Rotate On Yaw, que é responsável por aplicar rotação ao redor do Eixo Y, o eixo vertical do objeto.
No campo Radians, defina o valor que deseja usar como a velocidade de rotação. Quanto maior for este valor, mais rápido o item irá girar.
Por fim, conecte o Transform ao Rotate On Yaw e execute essa lógica através do On Update, para que o item gire continuamente durante o jogo.

Finalmente, vamos adicionar uma Tag ao nosso item para que ele possa ser identificado pela lógica de coleta do Jogador mais tarde.
Selecione a aba Tags, crie uma nova tag chamada item, e atribua-a à Entity coletável.
Mais tarde, usaremos esta tag para detectar quando o Jogador toca o objeto. Isso facilita a identificação de quais Entities são itens coletáveis, sem depender apenas de seu nome ou aparência visual.
Usar uma tag é uma abordagem limpa e flexível, pois seu projeto pode eventualmente ter muitos objetos coletáveis diferentes. Desde que todos tenham a tag item, a lógica do Jogador pode reconhecê-los como coletáveis.

Neste ponto, o item coletável está pronto para ser usado na cena.
Ele possui uma representação visual, um material, colisão fantasma para detecção, um Logic Brick para fazê-lo rotacionar, e uma tag item que permitirá ao Jogador reconhecê-lo mais tarde.