đ Leçon Base : DĂ©placement simple dâun PNJ entre deux points (sans attente)
Niveau : DĂ©butant â CatĂ©gorie : âBases du mouvementâ
Pour apprendre Ă faire marcher un fermier, une poule ou un garde entre deux points âïž
đż Objectif
Faire un PNJ qui se dĂ©place automatiquement entre deux points placĂ©s dans la scĂšne principale, sans sâarrĂȘter.
𧰠Matériel requis
- Une scĂšne avec ton PNJ (ex :
Fermier.tscn
) - Deux
Node2D
nommésPointA
etPointB
placés dans la carte principale - Affecte
PointA
etPointB
au PNJ dans lâinspecteur (grĂące aux@export
)
đ§âđ» Script de base (sans animation, sans pause)
extends CharacterBody2D
@export var point_a: Node2D
@export var point_b: Node2D
@export var speed := 40.0
var current_target_node: Node2D
func _ready():
current_target_node = point_a # Le PNJ commence vers A
func _physics_process(delta):
if current_target_node == null:
return
var target_pos = current_target_node.global_position
var direction = (target_pos - global_position).normalized()
velocity = direction * speed
move_and_slide()
if global_position.distance_to(target_pos) < 2.0:
# â On change de cible !
if current_target_node == point_a:
current_target_node = point_b
else:
current_target_node = point_a
đ Astuces importantes
- â Ne mets pas
PointA
etPointB
dans la scĂšne du PNJ, mais dans la map principale - â Toujours tester dans la scĂšne principale (pas juste la scĂšne du PNJ)
đ Tu sais maintenant :
- â Faire un PNJ qui marche automatiquement
- â
Utiliser
@export
pour dĂ©signer des points dans lâĂ©diteur - â CrĂ©er une boucle simple de mouvement
âĄïž PrĂȘt(e) pour une version plus vivante avec pause et animation ? Va voir la leçon intermĂ©diaire đ