Melhore sua experiência de jogo em Godot incorporando um sistema de dano e saúde.

Um sistema de saúde e dano permite que os jogadores sofram danos e percam pontos de saúde quando encontram obstáculos ou inimigos. Também permite que eles restaurem a saúde por vários meios, como power-ups ou pacotes de saúde.

Godot, um mecanismo de jogo de código aberto popular, fornece uma abordagem direta e flexível para a implementação de tais sistemas. Você pode facilmente criar um jogo 2D com um personagem do jogador, um inimigo e uma barra de saúde para representar visualmente a saúde do jogador.

Configurando o jogo Godot

Primeiro, configure a estrutura básica do projeto em motor de jogo Godot e crie os nós necessários.

O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.

Crie uma nova cena para o personagem do jogador. Adicionar um Corpo Cinemático2D nó, e dentro dele, adicione um CollisionShape2D com uma forma de retângulo para representar hitbox do jogador. Anexe um

sprite nó para o Corpo Cinemático2D para exibir o personagem do jogador.

# Player.gd
extends KinematicBody2D

const SPEED = 200

var velocity = Vector2.ZERO
var health = 100

func _physics_process(delta):
velocity.x = 0
velocity.y = 0

if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEED

if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED

move_and_collide(velocity * delta)

Agora, você tem um personagem de jogador básico em seu projeto Godot. Você pode mover o jogador usando as setas do teclado, mas ainda não há um sistema de saúde instalado.

Projetando elementos de interface do usuário da barra de saúde

Agora, você pode adicionar elementos de interface do usuário para representar visualmente a saúde do jogador. Godot fornece um controle embutido chamado TextureProgress que funciona bem para este propósito.

Crie um novo nó para o HUD (heads-up display). Adicionar um CanvasLayer nó, e dentro dele, adicione um TextureProgress nó. Personalize a aparência do TextureProgress node de acordo com o estilo e tema do seu jogo.

Para exibir a barra de saúde usando TextureProgress no HUD, você precisa atribuir uma textura a ele. TextureProgress usa duas texturas: uma para o fundo e outra para a parte preenchida (progresso).

No painel Inspetor, localize o Textura seção. Sob Textura, você encontrará propriedades chamadas Sob e Sobre. Clique no Carregar botão para cada propriedade e selecione as imagens correspondentes.

Anexe um script à cena do HUD para atualizar a barra de saúde com base na saúde do jogador:

# HUD.gd
extends CanvasLayer

onready var healthBar := $TextureProgress

func _ready():
update_health_bar()

func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health

Lidando com a saúde do jogador

Para diminuir a saúde do jogador quando ele cruza a borda da tela, você pode adicionar um verificação condicional usando uma instrução if. Se o jogador for além da tela, você pode diminuir a saúde dele. Veja como você pode conseguir isso:

# player.gd
extends KinematicBody2D

const SPEED = 200
const DAMAGE_AMOUNT = 0.1

var velocity = Vector2.ZERO
var health = 100

# Screen boundaries
var screen_size
var margin = 20

func _ready():
screen_size = get_viewport_rect().size

func _physics_process(delta):
#... (existing movement code)
move_and_collide(velocity * delta)

var c1 = position.x < -margin
var c2 = position.x > screen_size.x + margin
var c3 = position.y < -margin
var c4 = position.y > screen_size.y + margin

# Check if the player is outside the screen boundaries
if c1 or c2 or c3 or c4:
take_damage_on_screen_exit()

func take_damage_on_screen_exit():
health -= DAMAGE_AMOUNT
if health <= 0:
health = 0
# Game over logic here

update_health_ui()

Adicione o update_health_ui() função no player.gd script para chamar o script HUD e atualizar a barra de saúde.

# Player.gd
extends KinematicBody2D

#... (other code)

func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()

Com essas alterações, o jogador agora sofrerá dano ao cruzar a borda da tela, e a interface do usuário da barra de saúde será atualizada de acordo.

Incluindo Recursos Adicionais

O sistema de saúde e dano pode ser expandido com vários recursos adicionais para aprimorar a experiência de jogo. Algumas ideias incluem:

Coletas de saúde

Implemente coletas de saúde que permitem ao jogador restaurar sua saúde quando coletadas. Os coletores de saúde podem ser itens colecionáveis ​​espalhados pelo mundo do jogo ou recompensas por derrotar inimigos.

Quando o jogador interage com um coletor de saúde, sua saúde deve aumentar em uma certa quantidade, até um valor máximo. Você pode usar um novo script para o item de coleta de integridade e lidar com a lógica de colisão e restauração de integridade.

Power-ups de invencibilidade

Crie power-ups que concedem ao jogador invencibilidade temporária por tempo limitado. Quando o jogador coleta um power-up de invencibilidade, ele se torna imune a danos de inimigos ou outros perigos.

Implemente um cronômetro para rastrear a duração restante do estado de invencibilidade e, quando o cronômetro acabar, o jogador retornará ao estado vulnerável.

Diferentes tipos de inimigos

Crie uma variedade de inimigos com diferentes padrões de ataque, valores de dano e comportamentos. Cada tipo de inimigo pode representar desafios únicos para o jogador e exigir estratégias diferentes para derrotar.

Por exemplo, alguns inimigos podem se mover mais rápido, causar mais dano ou ter pontos fracos específicos que o jogador pode explorar. Adicionar diversidade aos encontros com inimigos mantém a jogabilidade envolvente e evita que ela se torne monótona.

Regeneração da saúde

Implemente a regeneração de saúde ao longo do tempo para recompensar os jogadores por evitar danos. Quando o jogador não está recebendo dano por um período específico, sua saúde se regenera gradualmente até um certo limite.

No entanto, certifique-se de que a taxa de regeneração esteja equilibrada para evitar situações em que o jogador pode simplesmente esperar que sua saúde se recupere totalmente sem nenhum desafio.

Feedback de áudio e visual

Forneça feedback visual e de áudio atraente quando o jogador sofrer dano, restaurar saúde ou derrotar inimigos.

Impactante efeitos sonoros sem direitos autorais, tremores de tela, efeitos de partículas e dicas visuais podem melhorar a imersão do jogador e tornar o sistema de saúde e dano mais dinâmico e envolvente.

Lembre-se de considerar o equilíbrio geral dos recursos adicionais introduzidos. Continue testando e coletando feedback para garantir que a jogabilidade permaneça desafiadora, agradável e com bom ritmo ao longo do jogo.

Tornando os jogos Godot mais envolventes com o sistema de saúde e danos

A integração de um sistema de saúde e danos ao seu jogo Godot adiciona profundidade e desafio, tornando a jogabilidade mais envolvente para os jogadores. Ele apresenta um elemento de risco-recompensa, pois os jogadores precisam criar estratégias e gerenciar sua saúde de maneira eficaz para progredir no jogo.

Além disso, a representação visual da barra de saúde fornece aos jogadores um feedback importante sobre seu estado atual, aumentando sua sensação de imersão.