Como projetar e codificar uma barra de integridade no Unity3D
Pioneiro em alguns dos primeiros videogames do mundo, a saúde é uma mecânica comum que persiste em muitos dos títulos mais populares de hoje. A saúde torna possível empregar mecânicas de luta complexas, criar progressão do jogador e tornar seu jogo mais intuitivo. Mas como você adiciona um sistema de saúde aos seus próprios jogos?
O Unity3D facilita a adição de elementos de interface do usuário 2D a jogos 3D, por isso é um ótimo lugar para começar a explorar as barras de saúde pela primeira vez.
O que você vai aprender
Na superfície, este projeto pode não parecer complicado. Apesar disso, você precisará entender vários conceitos-chave de codificação do Unity3D para criar uma barra de integridade funcional. Isso significa que há muito o que aprender ao longo deste projeto, incluindo:
- Como criar elementos/sprites de interface do usuário 2D no Unity3D.
- Como editar componentes de objeto de jogo com código.
- Como compartilhar variáveis entre scripts no Unity3D.
Passo 1: Configure sua cena
Antes de começar a codificar sua barra de saúde, você precisa de uma cena com um modelo de jogador para aplicar. Para começar, você pode seguir nosso guia de controlador de personagem Unity3D baseado em física para criar um modelo de jogador com controles básicos.
Com uma cena e um modelo de jogador definidos, é hora de adicionar um elemento de interface do usuário. Clique com o botão direito do mouse na janela Hierarchy e selecione UI > Image . Isso criará dois novos itens em sua hierarquia: um objeto pai Canvas e um objeto filho Image. Altere o nome do objeto filho para Healthbar. Escolha uma largura, altura e posição para sua barra de saúde usando o inspetor.
Você pode adicionar uma imagem de interface do usuário um pouco maior com sua cor definida como preto para atuar como plano de fundo/borda para a barra de saúde. Apenas certifique-se de que esteja acima da barra de saúde na hierarquia para que seja exibido atrás dela.
Esse elemento da interface do usuário funciona como base para sua barra de saúde, mas você também precisa de um sprite para animá-lo. Vá para o painel Projeto, clique com o botão direito do mouse e selecione Criar > 2D > Sprites > Quadrado .
Selecione a Healthbar na hierarquia e arraste o sprite que você acabou de criar para a caixa de seleção Source Image dentro do inspetor. Você também pode alterar o Tipo de imagem para Preenchido, o Método de preenchimento para Horizontal e a Origem de preenchimento para Esquerda. Agora, se você executar o jogo e usar o controle deslizante Preencher valor , verá sua barra de saúde encolher e crescer.
Etapa 2: adicionar uma variável de integridade
Não faria muito sentido criar uma barra de saúde sem uma variável de saúde para ditar seu estado. Outros scripts precisam acessar essa variável e faz sentido colocá-la em algum lugar central. Adicione-o ao script Character Control como um flutuador público:
public float playerHealth = 1.0f;
Usar um ponto flutuante para essa variável significa que você pode representar facilmente qualquer porcentagem de 0 a 100, para corresponder à variável Valor de preenchimento da imagem da interface do usuário da barra de saúde. Por exemplo, um jogadorHealth de 0,5f é 50% da largura da barra de saúde.
Etapa 3: compartilhar variáveis entre scripts no Unity
As variáveis geralmente operam dentro de suas próprias funções e scripts. Isso os torna inacessíveis de outras funções e scripts, a menos que você tome medidas para informar ao código onde encontrar as variáveis com as quais deseja trabalhar.
Comece criando um novo arquivo de script chamado Health para hospedar o código. Você pode arrastar e soltar esse script no elemento de interface do usuário Healthbar criado na primeira etapa. O código a seguir vai para a função void Update().
Esse processo começa com a localização do objeto do jogo que possui a variável. Neste caso, é o objeto Character_Model:
GameObject Character_Model = GameObject.Find("Character_Model");
Em seguida, é hora de encontrar o componente de script que contém a variável com a qual você precisa trabalhar.
Character_Control character_Control = Character_Model.GetComponent();
E, finalmente, você pode extrair a variável específica que está procurando. Neste caso, é a variável playerHealth que você adicionou ao seu controlador de personagem. Atribua isso a uma variável flutuante dentro do script atual chamada currentHealth.
currentHealth = character_Control.playerHealth;
Leva apenas algumas linhas de código para obter a variável necessária e você pode aplicar esse método sempre que precisar acessar a saúde do seu jogador. Seu código deve ficar assim quando terminar:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health: MonoBehaviour
{
public float currentHealth;
void Start()
{
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Etapa 4: programar o objeto de jogo da barra de integridade da interface do usuário
Agora que você criou um elemento de interface do usuário da barra de integridade e tem acesso à variável de integridade do jogador, é hora de fazê-los funcionar juntos. Para começar, adicione uma variável estática privada que conterá o componente de imagem da sua barra de saúde:
private static Image Healthbar;
Você pode atribuir o componente de imagem a essa variável na função void Start(), que é executada apenas uma vez.
Healthbar = GetComponent();
Agora que você tem todas as suas variáveis no lugar, você pode usar o código da etapa anterior para definir a largura de preenchimento do objeto de interface do usuário da barra de saúde. Você não precisa fazer nenhuma conversão aqui; a saúde do jogador e a quantidade de preenchimento da barra de saúde são variáveis flutuantes.
Healthbar.fillAmount = currentHealth;
Com esse código em vigor, sua barra de saúde será preenchida para cima e para baixo com base na variável de saúde encontrada no código Character_Control. Isso é um pouco chato, porém, e definitivamente poderia fazer com um pouco de cor.
Comece adicionando uma nova cor para deixar a barra de saúde com uma cor verde clara quando o jogador estiver com muita saúde.
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
Em seguida, adicione uma instrução if para verificar se a saúde do jogador está acima de 0,3f, ou seja, 30% ou mais. Se for maior que 0,3f, defina a barra de integridade para corresponder à cor que você acabou de adicionar. Se estiver abaixo de 0,3f, deixe a barra de saúde vermelha.
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
Passo 5: Testando o Código
Como você pode ver no código completo abaixo, este projeto é bastante simples quando está tudo junto. Claro, porém, você precisa de uma maneira de testar seu código.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health: MonoBehaviour
{
private static Image Healthbar;
public float currentHealth;
void Start()
{
Healthbar = GetComponent();
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
}
}
Você pode adicionar uma única linha de código ao script Character_Control para possibilitar o teste. Sempre que o jogador pressionar a tecla W para avançar, remova uma pequena quantidade de saúde. Você pode adicionar o mesmo código a qualquer script com acesso à variável playerHealth para obter os mesmos resultados:
playerHealth -= 0.001f;
Você também pode considerar a adição de recursos exclusivos ao seu projeto Unity. Você pode encontrar ativos gratuitos do Unity na web, dando a você a chance de animar seu projeto sem ter que gastar dinheiro.
Construindo Barras de Saúde no Unity3D
Seu jogo está começando a tomar forma agora que você tem uma barra de saúde para seu personagem. Ainda há muito trabalho a fazer, mas agora você deve ter algumas das principais habilidades necessárias para começar a progredir de verdade. Claro, porém, nunca é demais ler mais guias.
Deixe um comentário