Dans cette article, nous allons voir comment sélectionner des éléments en GDScript.

Dans Godot, pour sélectionner des éléments, nous allons utiliser la hiérarchies de types parents/enfants qui se crée automatiquement lors de la créations des nodes. Dans le gestionnaire de scène, cette hiérarchie est matérialisé par ces symboles :

Pour sélectionner un éléments en GDScript, nous utiliserons la fonction get_node().

L’autocompletion de l’éditeur de texte nous facilite grandement la tâche en nous proposant les différents noeuds présent dans la scène :

C’est bien ici qu’il faut faire attention à ce que l’on souhaites sélectionner. Si on selectionne ici « player », les méthodes que nous appliquerons à « player » seront appliquées aux enfants de « player ».

Le raccourcis « . » correspond à l’entièreté de la scène et de tout ses enfants.

Ensuite, il est possible d’appliquer un nombre conséquent de méthode directement issu du moteur Godot afin d’agir sur ces nodes, par exemple, pour déplacer sur x et tourner des nodes :

extends Node2D

var cnt = 0

func _process(delta):
	cnt += 1
	get_node("player").position.x = cnt
	get_node("player/Sprite").rotation_degrees = cnt

Etant donné que cette méthode est énormément utilisé en GDScript, dans un souci d’efficience du code, la methode get_node() peut être remplacé par le raccourcis « $ » ansi, le code ci dessus peut être remplacé par :

extends Node2D

var cnt = 0

func _process(delta):
	cnt += 1
	$player.position.x = cnt
	$playe/Sprite.rotation_degrees = cnt

Stockage des nodes dans une variables.

Pour encore plus d’efficience et/ou de lisibilité il est possible de stocker un node et la hiérarchie dans une variable.

Toutefois, comme nous ne sommes pas certain que l’instance soit créée au début du script, il convient d’utiliser l’instruction « onready » avant l’instruction var.

Cette instruction permet d’indiquer au code de créer la variable uniquement lorsque l’instance est crée.

extends Node2D

var cnt = 0
onready var charac = get_node("player")
onready var left_hand = get_node("player/left_hand")
onready var rigth_hand = get_node("player/right_hand")

func _ready():
	pass

func _process(delta):
	cnt += 1
	get_node("player").position.x = cnt
	left_hand.rotation_degrees = cnt
	rigth_hand.rotation_degrees = -cnt

0 commentaire

Laisser un commentaire