View on GitHub

Zelda-Like Creation Guide

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

đŸ‘Ÿ CrĂ©er un ennemi qui patrouille entre deux points dans Godot 4.4

Ce guide fait partie de mon journal de progression Godot RPG đŸ§Ș
Il dĂ©crit comment j’ai créé un slime qui se dĂ©place automatiquement entre deux points, avec des animations mignonnes et une personnalisation facile ✹


🎯 Objectif

Créer un ennemi (ex: slime) capable de :


🧠 Script complet

extends CharacterBody2D

@export var speed = 20
@export var limit = 0.5
@export var endPoint: Marker2D
@export var movement_axis: Vector2 = Vector2.RIGHT  # Nouvelle variable pour définir l'axe de mouvement

@onready var animations = $AnimatedSprite2D

var startPosition
var endPosition

func _ready() -> void:
	startPosition = position
	endPosition = endPoint.global_position

func changeDirection():
	var tempEnd = endPosition
	endPosition = startPosition
	startPosition = tempEnd

func updateVelocity():
	var moveDirection = (endPosition - position)
	if moveDirection.length() < limit:
		changeDirection()
		
	velocity = moveDirection.normalized() * speed
	
func updateAnimation():
	var animationString = "walk_"
	if abs(velocity.x) > abs(velocity.y):
		animationString += "right" if velocity.x > 0 else "left"
	else:
		animationString += "down" if velocity.y > 0 else "up"
	
	if animationString in animations.sprite_frames.get_animation_names():
		animations.play(animationString)
	else:
		animations.play("walk_down")  # Animation par défaut si l'animation spécifique n'existe pas
		
func _physics_process(delta: float) -> void:
	updateVelocity()
	move_and_slide()
	updateAnimation()

✹ Explications

ÉlĂ©ment RĂŽle
@export var speed DĂ©finit la vitesse de dĂ©placement de l’ennemi
@export var limit Distance en-dessous de laquelle l’ennemi inverse sa direction
@export var endPoint Le point cible que l’ennemi doit atteindre (souvent un Marker2D)
@export var movement_axis Permet d’orienter diffĂ©remment l’ennemi (par dĂ©faut Ă  droite)
animations.play() Joue automatiquement la bonne animation selon la direction
changeDirection() Intervertit startPosition et endPosition pour faire des allers-retours

🎹 Animations requises

Ton AnimatedSprite2D doit contenir les animations suivantes :

Sinon, le slime jouera l’animation walk_down par dĂ©faut s’il ne trouve pas la bonne.


đŸ§Ș Astuce bonus

Tu peux créer plusieurs slimes différents dans ton jeu simplement en :


📅 Date de rĂ©daction

Guide rédigé le 12/04/2025


đŸŸ Ce guide fait partie de mon projet de RPG Godot 4.4.
D’autres guides sont disponibles ici :

🔗 Retour à l’accueil