View on GitHub

Zelda-Like Creation Guide

Un guide complet pour créer un jeu de type Zelda avec Godot Engine.

💀 Système de mort complet dans Godot 4.4

Bienvenue dans ce guide pour mettre en place un système complet de mort dans un jeu RPG avec Godot 4.4 !
Tu vas apprendre à gérer la perte de vie, jouer un son quand le joueur est touché, afficher une scène de Game Over et réinitialiser proprement la partie 🎮


🧱 Étape 1 : Créer un HealthManager (singleton)

Ce script gère les points de vie et émet des signaux quand la santé change.

extends Node

signal health_updated(current, max)

var max_health := 3
var current_health := 3

func lose_health(amount: int = 1):
	current_health = clamp(current_health - amount, 0, max_health)
	emit_signal("health_updated", current_health, max_health)

func reset_health():
	current_health = max_health
	emit_signal("health_updated", current_health, max_health)

Ajoute-le dans Project > Project Settings > AutoLoad avec le nom HealthManager.


🧠 Étape 2 : Gérer la perte de vie dans Player.gd

Dans le joueur, détecte les collisions avec la HitBox et ajoute un cooldown pour éviter de perdre toute la vie d’un coup :

@export var hurt_cooldown_duration: float = 0.8
var hurt_cooldown_timer: float = 0.0

func _physics_process(delta):
	if hurt_cooldown_timer > 0:
		hurt_cooldown_timer -= delta

func _on_hurt_box_area_entered(area):
	if area.name == "HitBox":
		if hurt_cooldown_timer <= 0 and HealthManager.current_health > 0:
			HealthManager.lose_health()
			$HurtSound.play()
			hurt_cooldown_timer = hurt_cooldown_duration
			if HealthManager.current_health == 0:
				handle_player_death()

🔊 Étape 3 : Ajouter un son quand le joueur est touché


💀 Étape 4 : Créer la scène GameOver.tscn

Structure recommandée :

GameOver (Control)
├── ColorRect (fond noir, Full Rect)
├── CanvasGroup
│   ├── Label ("GAME OVER")
│   ├── Button ("Rejouer")
│   └── Label (Crédits)
├── AnimationPlayer (pour le fade)
└── AudioStreamPlayer (musique triste)

Animation "fade_in" sur le CanvasGroup:modulate.a :

Dans le script :



func _ready():
	$AnimationPlayer.play("fade_in")
	await get_tree().create_timer(1.0).timeout
	$GameOverMusic.play()

func _on_restart_button_pressed():
	HealthManager.reset_health()
	gget_tree().change_scene_to_file("res://world/village.tscn") # ajoute le nom de ta scene

🔁 Étape 5 : Jouer l’animation de mort dans Player.gd

Quand la vie tombe à 0 :

func handle_player_death():
	print("Player is dead!")
	animated_sprite.play("dead")
	velocity = Vector2.ZERO
	set_physics_process(false)
	await get_tree().create_timer(1.5).timeout
	get_tree().change_scene_to_file("res://ui/game_over.tscn") # ajoute le nom de ta scene

🎉 Résultat final

✔ Le joueur peut être blessé avec un cooldown
✔ Un son se joue quand il est touché
✔ Une animation de mort se lance
✔ Un écran Game Over apparaît avec fade et musique
✔ Le bouton “Rejouer” recharge la scène et réinitialise la vie


🐾 Ce guide fait partie de mon projet de RPG Godot 4.4.
🔗 Retour à l’accueil
📆 Dernière mise à jour : 12/04/2025