Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

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 modelo de jogador em vigor, é hora de adicionar um elemento de interface do usuário. Clique com o botão direito do mouse na janela Hierarquia e selecione IU > Imagem. 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 mudar Tipo de imagem para Preenchido, Método de preenchimento para Horizontal, e Preencher Origem para a esquerda. Agora, se você executar o jogo e usar o Quantidade de Preenchimento controle deslizante, você deve ver sua barra de saúde encolher e crescer.

Se você não conseguir ver o menu do componente de interface do usuário, vá para Janela > Gerenciador de Pacotese certifique-se de ter o pacote 2D instalado.

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:

públicoflutuador 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 integridade. Por exemplo, um playerHealth 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. Encontrar("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:

usando Sistema. Coleções;
usando Sistema. Coleções. Genérico;
usando UnityEngine;
usando UnityEngine. IU;

públicoaulaSaúde: MonoComportamento
{
públicoflutuador atualSaúde;

vazioComeçar()
{
}

vazioAtualizar()
{
GameObject Character_Model = GameObject. Encontrar("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 saúde e tem acesso à variável de saúde 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:

privadoestático Barra de saúde da imagem;

Você pode atribuir o componente de imagem a essa variável na função void Start(), que é executada apenas uma vez.

Barra de Saúde = 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 realizar 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.

Cor verdeSaúde = novo Cor(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.

se (atualSaúde >= 0,3f) {
Healthbar.color = greenHealth;
} outro {
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.

usando Sistema. Coleções;
usando Sistema. Coleções. Genérico;
usando UnityEngine;
usando UnityEngine. IU;

públicoaulaSaúde: MonoComportamento
{
privadoestático Barra de saúde da imagem;
públicoflutuador atualSaúde;

vazioComeçar()
{
Barra de Saúde = GetComponent();
}

vazioAtualizar()
{
GameObject Character_Model = GameObject. Encontrar("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;

Cor verdeSaúde = novo Cor(0,6f, 1, 0,6f, 1);

se (atualSaúde >= 0,3f) {
Healthbar.color = greenHealth;
} outro {
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 encontre ativos gratuitos do Unity em toda a web, dando-lhe a oportunidade de animar o 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.