Mejora tu experiencia de juego en Godot incorporando un sistema de salud y daños.

Un sistema de salud y daños permite a los jugadores recibir daño y perder puntos de salud cuando se encuentran con obstáculos o enemigos. También les permite restaurar la salud a través de varios medios, como potenciadores o paquetes de salud.

Godot, un popular motor de juegos de código abierto, proporciona un enfoque directo y flexible para implementar dichos sistemas. Puede crear fácilmente un juego 2D con un personaje de jugador, un enemigo y una barra de salud para representar visualmente la salud del jugador.

Configuración del juego de Godot

Primero, establezca la estructura básica del proyecto en el motor de juego de Godot y crear los nodos necesarios.

El código utilizado en este artículo está disponible en este repositorio GitHub y es gratis para su uso bajo la licencia MIT.

Crea una nueva escena para el personaje del jugador. Agrega un CinemáticaCuerpo2D nodo, y dentro de él, agregue un ColisiónForma2D

instagram viewer
con forma de rectángulo para representar el hitbox del jugador. Adjunta un Duende nodo a la CinemáticaCuerpo2D para mostrar el carácter del jugador.

# 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)

Ahora, tienes un personaje de jugador básico en tu proyecto de Godot. Puede mover al jugador con las teclas de flecha, pero todavía no hay un sistema de salud.

Diseño de elementos de la interfaz de usuario de la barra de salud

Ahora, puede agregar elementos de interfaz de usuario para representar visualmente la salud del jugador. Godot proporciona un control integrado llamado TexturaProgreso que funciona bien para este propósito.

Cree un nuevo nodo para el HUD (pantalla de visualización frontal). Agrega un CanvasLayer nodo, y dentro de él, agregue un TexturaProgreso nodo. Personaliza la apariencia de la TexturaProgreso nodo de acuerdo con el estilo y el tema de su juego.

Para mostrar la barra de salud usando TexturaProgreso en el HUD, debe asignarle una textura. TexturaProgreso utiliza dos texturas: una para el fondo y otra para la parte rellena (progreso).

En el panel Inspector, busque el Textura sección. Bajo Textura, encontrará propiedades llamadas Bajo y Encima. Haga clic en el Carga para cada propiedad y seleccione las imágenes correspondientes.

Adjunte un script a la escena HUD para actualizar la barra de salud según la salud del jugador:

# 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

Manejo de la salud del jugador

Para disminuir la salud del jugador cuando cruza el borde de la pantalla, puede agregar un verificación condicional usando una declaración if. Si el jugador va más allá de la pantalla, puede disminuir su salud. Así es como puedes lograr esto:

# 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()

Añade el actualizar_salud_ui() función en el jugador.gd script para llamar al script HUD y actualizar la barra de salud.

# Player.gd
extends KinematicBody2D

#... (other code)

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

Con estos cambios, el jugador ahora recibirá daño cuando cruce el borde de la pantalla, y la interfaz de usuario de la barra de salud se actualizará en consecuencia.

Incluyendo funciones adicionales

El sistema de salud y daño se puede expandir con varias características adicionales para mejorar la experiencia de juego. Algunas ideas incluyen:

Recolecciones de salud

Implemente recolecciones de salud que le permitan al jugador restaurar su salud cuando las recolecte. Las recolecciones de salud pueden ser artículos coleccionables repartidos por todo el mundo del juego o recompensas por derrotar enemigos.

Cuando el jugador interactúa con una recolección de salud, su salud debería aumentar en cierta cantidad, hasta un valor máximo. Puede usar un nuevo script para el elemento de recuperación de salud y manejar la lógica de colisión y restauración de salud.

Potenciadores de invencibilidad

Crea potenciadores que otorgan al jugador invencibilidad temporal por un tiempo limitado. Cuando el jugador obtiene un poder de invencibilidad, se vuelve inmune al daño de los enemigos u otros peligros.

Implemente un temporizador para rastrear la duración restante del estado de invencibilidad, y cuando se agote el tiempo, el jugador vuelve a su estado vulnerable.

Diferentes tipos de enemigos

Diseña una variedad de enemigos con diferentes patrones de ataque, valores de daño y comportamientos. Cada tipo de enemigo puede plantear desafíos únicos para el jugador y requiere diferentes estrategias para vencer.

Por ejemplo, algunos enemigos pueden moverse más rápido, infligir más daño o tener puntos débiles específicos que el jugador puede explotar. Agregar diversidad a los encuentros con enemigos mantiene el juego atractivo y evita que se vuelva monótono.

Regeneración de salud

Implemente la regeneración de salud con el tiempo para recompensar a los jugadores por evitar daños. Cuando el jugador no recibe daño durante un período específico, su salud se regenera gradualmente hasta cierto umbral.

Sin embargo, asegúrese de que la tasa de regeneración esté equilibrada para evitar situaciones en las que el jugador simplemente pueda esperar a que su salud se recupere por completo sin ningún desafío.

Comentarios de audio y visuales

Proporcione comentarios de audio y visuales convincentes cuando el jugador recibe daño, restaura la salud o derrota a los enemigos.

Impactante efectos de sonido sin copyright, los movimientos de pantalla, los efectos de partículas y las señales visuales pueden mejorar la inmersión del jugador y hacer que el sistema de salud y daño se sienta más dinámico y atractivo.

Recuerde considerar el equilibrio general de las características adicionales que introduce. Siga probando y recopilando comentarios para asegurarse de que el juego siga siendo desafiante, agradable y de buen ritmo durante todo el juego.

Haciendo que los juegos de Godot sean más atractivos con el sistema de salud y daño

La integración de un sistema de salud y daño en tu juego de Godot agrega profundidad y desafío, lo que hace que el juego sea más atractivo para los jugadores. Introduce un elemento de riesgo-recompensa, ya que los jugadores deben diseñar estrategias y administrar su salud de manera efectiva para progresar en el juego.

Además, la representación visual de la barra de salud brinda a los jugadores información importante sobre su estado actual, lo que mejora su sensación de inmersión.