Améliorez votre expérience de jeu dans Godot en incorporant un système de santé et de dégâts.
Un système de santé et de dégâts permet aux joueurs de subir des dégâts et de perdre des points de santé lorsqu'ils rencontrent des obstacles ou des ennemis. Cela leur permet également de restaurer la santé par divers moyens, tels que des power-ups ou des packs de santé.
Godot, un moteur de jeu open source populaire, offre une approche simple et flexible pour mettre en œuvre de tels systèmes. Vous pouvez facilement créer un jeu 2D avec un personnage joueur, un ennemi et une barre de santé pour représenter visuellement la santé du joueur.
Configurer le jeu Godot
Tout d'abord, configurez la structure de base du projet dans le moteur de jeu Godot et créez les nœuds nécessaires.
Le code utilisé dans cet article est disponible dans ce Référentiel GitHub et est libre d'utilisation sous la licence MIT.
Créez une nouvelle scène pour le personnage du joueur. Ajouter un KinematicBody2D nœud, et à l'intérieur de celui-ci, ajoutez un
CollisionShape2D avec une forme de rectangle pour représenter la hitbox du joueur. Joindre un Lutin nœud à la KinematicBody2D pour afficher le personnage du joueur.# Player.gd
extends KinematicBody2Dconst SPEED = 200
var velocity = Vector2.ZERO
var health = 100func _physics_process(delta):
velocity.x = 0
velocity.y = 0if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEEDif Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED
move_and_collide(velocity * delta)
Maintenant, vous avez un personnage de base dans votre projet Godot. Vous pouvez déplacer le joueur en utilisant les touches fléchées, mais il n'y a pas encore de système de santé en place.
Conception des éléments de l'interface utilisateur de la barre de santé
Maintenant, vous pouvez ajouter des éléments d'interface utilisateur pour représenter visuellement la santé du joueur. Godot fournit un contrôle intégré appelé TextureProgress qui fonctionne bien à cette fin.
Créez un nouveau nœud pour le HUD (affichage tête haute). Ajouter un CanvasLayer nœud, et à l'intérieur de celui-ci, ajoutez un TextureProgress nœud. Personnalisez l'apparence de la TextureProgress node selon le style et le thème de votre jeu.
Pour afficher la barre de santé à l'aide de TextureProgress dans le HUD, vous devez lui attribuer une texture. TextureProgress utilise deux textures: une pour le fond et une autre pour la partie remplie (progression).
Dans le panneau Inspecteur, localisez le Texture section. Sous Texture, vous trouverez des propriétés appelées Sous et Sur. Clique le Charger bouton pour chaque propriété et sélectionnez les images correspondantes.
Attachez un script à la scène HUD pour mettre à jour la barre de santé en fonction de la santé du joueur :
# HUD.gd
extends CanvasLayeronready var healthBar := $TextureProgress
func _ready():
update_health_bar()
func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health
Gérer la santé des joueurs
Pour diminuer la santé du joueur lorsqu'il franchit la bordure de l'écran, vous pouvez ajouter un vérification conditionnelle à l'aide d'une instruction if. Si le joueur va au-delà de l'écran, vous pouvez diminuer sa santé. Voici comment vous pouvez y parvenir :
# player.gd
extends KinematicBody2Dconst SPEED = 200
const DAMAGE_AMOUNT = 0.1var velocity = Vector2.ZERO
var health = 100# Screen boundaries
var screen_size
var margin = 20func _ready():
screen_size = get_viewport_rect().sizefunc _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()
Ajouter le update_health_ui() fonction dans le joueur.gd script pour appeler le script HUD et mettre à jour la barre de santé.
# Player.gd
extends KinematicBody2D#... (other code)
func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()
Avec ces modifications, le joueur subira désormais des dégâts lorsqu'il franchira la bordure de l'écran, et l'interface utilisateur de la barre de santé sera mise à jour en conséquence.
Inclure des fonctionnalités supplémentaires
Le système de santé et de dégâts peut être étendu avec diverses fonctionnalités supplémentaires pour améliorer l'expérience de jeu. Certaines idées incluent:
Collectes de santé
Implémentez des récupérations de santé qui permettent au joueur de restaurer sa santé lorsqu'il est collecté. Les récupérations de santé peuvent être des objets de collection dispersés dans le monde du jeu ou des récompenses pour avoir vaincu des ennemis.
Lorsque le joueur interagit avec une récupération de santé, sa santé doit augmenter d'un certain montant, jusqu'à une valeur maximale. Vous pouvez utiliser un nouveau script pour l'élément de récupération de santé et gérer la logique de collision et de restauration de santé.
Bonus d'invincibilité
Créez des power-ups qui accordent au joueur une invincibilité temporaire pour un temps limité. Lorsque le joueur récupère un bonus d'invincibilité, il devient immunisé contre les dégâts des ennemis ou d'autres dangers.
Implémentez une minuterie pour suivre la durée restante de l'état d'invincibilité, et lorsque la minuterie est épuisée, le joueur revient à son état vulnérable.
Différents types d'ennemis
Concevez une variété d'ennemis avec différents modèles d'attaque, valeurs de dégâts et comportements. Chaque type d'ennemi peut poser des défis uniques au joueur et nécessiter différentes stratégies pour le vaincre.
Par exemple, certains ennemis peuvent se déplacer plus rapidement, infliger plus de dégâts ou avoir des points faibles spécifiques que le joueur peut exploiter. Ajouter de la diversité aux rencontres ennemies maintient le gameplay engageant et l'empêche de devenir monotone.
Régénération de la santé
Mettez en œuvre la régénération de la santé au fil du temps pour récompenser les joueurs qui évitent les dégâts. Lorsque le joueur ne subit pas de dégâts pendant une durée spécifique, sa santé se régénère progressivement jusqu'à un certain seuil.
Cependant, assurez-vous que le taux de régénération est équilibré pour éviter les situations où le joueur peut simplement attendre que sa santé se rétablisse complètement sans aucun défi.
Rétroaction audio et visuelle
Fournissez des commentaires audio et visuels convaincants lorsque le joueur subit des dégâts, restaure la santé ou bat des ennemis.
Percutant effets sonores libres de droit, les tremblements d'écran, les effets de particules et les repères visuels peuvent améliorer l'immersion du joueur et rendre le système de santé et de dégâts plus dynamique et engageant.
N'oubliez pas de tenir compte de l'équilibre global des fonctionnalités supplémentaires que vous introduisez. Continuez à tester et à recueillir des commentaires pour vous assurer que le gameplay reste stimulant, agréable et bien rythmé tout au long du jeu.
Rendre Godot Games plus engageant avec le système de santé et de dégâts
L'intégration d'un système de santé et de dégâts dans votre jeu Godot ajoute de la profondeur et du défi, rendant le gameplay plus attrayant pour les joueurs. Il introduit un élément risque-récompense, car les joueurs doivent élaborer des stratégies et gérer efficacement leur santé pour progresser dans le jeu.
De plus, la représentation visuelle de la barre de santé fournit aux joueurs des informations importantes sur leur état actuel, améliorant leur sentiment d'immersion.