I. Sommaire▲
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Godot Engine - Jeu de plateformes 2D - Les scripts
III. Résumé▲
Dans cet épisode, nous allons découvrir comment ajouter des comportements aux nœuds de notre scène à l'aide des scripts. Ainsi, nous pourrons déplacer le carré bleu à l'aide des touches du clavier.
III-A. Les scripts▲
Lorsque Godot crée un script, il le remplit avec le code suivant :
extends Node2D # Cette partie varie suivant le nœud auquel vous attachez votre script
# les variables membres vont ici, exemple :
# var a=2
# var b="textvar"
func _ready
(
):
# Initialisation
pass
La fonction _ready() est appelée lorsque le nœud auquel le script est attaché est inséré dans la scène.
III-B. Afficher le nom du nœud▲
Pour afficher du texte dans la console, vous pouvez utiliser la fonction print(). Pour récupérer le nom de l'objet actuel, vous pouvez utiliser la fonction get_name().
extends RigidBody2D
func _ready
(
):
print
(
get_name))
III-C. Afficher la vélocité du RigidBody2D▲
Pour récupérer la vélocité d'un « RigidBody2D », nous pouvons utiliser get_linear_velocity(). Toutefois, si nous affichons la vélocité dans la fonction _ready(), la vélocité ne s'affichera qu'une seule fois, lors de l'instanciation du nœud. Cela n'est pas utile et en plus cela affichera toujours 0,0.
III-C-1. Les fonctions de processus▲
Godot permet d'activer deux fonctions qui seront appelées à intervalles réguliers :
- _process() : appelée à chaque frame. L'appel à la fonction s'active avec set_process(true) ;
- _fixed_process() : appelée à chaque mise à jour par le moteur physique. L'appel à la fonction s'active avec set_fixed_process(true).
Comme nous souhaitons afficher la vélocité, qui est liée aux mises à jour de la physique du jeu, nous faisons notre appel dans la fonction _fixed_process() :
extends RigidBody2D
func _ready
(
):
set_fixed_process
(
true)
func _fixed_process
(
delta) :
print
(
get_linear_velocity
(
))
III-D. Déplacer le joueur▲
Maintenant, pour déplacer le joueur, il suffit d'appeler la fonction modifiant la vélocité : set_linear_velocity().
extends RigidBody2D
func _ready
(
):
set_fixed_process
(
true)
func _fixed_process
(
delta) :
set_linear_velocity
(
Vector2
(
200
,get_linear_velocity
(
).y))
III-E. Déplacer le jouer avec les touches fléchées▲
Godot utilise un système d'actions qui peuvent être déclenchées par l'appui des touches. Le code ne doit pas vérifier directement l'appui sur les touches, mais le déclenchement des actions. Ainsi, vous pouvez obtenir un code simple, tout en gérant plusieurs configurations d'entrées utilisateur.
III-E-1. Définir une action▲
Les actions se définissent dans les propriétés du projet (« Project Settings »), dans l'onglet « Input Map».
III-E-2. Détecter le déclenchement d'une action▲
Pour détecter si une action est déclenchée, nous utilisons Input.is_action_pressed(). Si la valeur retournée est true, alors l'action est déclenchée.
extends RigidBody2D
func _ready
(
):
set_fixed_process
(
true)
func _fixed_process
(
delta) :
var btn_right =
Input.is_action_pressed
(
"btn_right"
)
var btn_left =
Input.is_action_pressed
(
"btn_left"
)
if
btn_left:
set_linear_velocity
(
Vector2
(-
200
,get_linear_velocity
(
).y))
elif
btn_right:
set_linear_velocity
(
Vector2
(
200
,get_linear_velocity
(
).y))
else
:
set_linear_velocity
(
Vector2
(
0
,get_linear_velocity
(
).y))
III-F. Rendre disponible une variable dans l'inspecteur▲
Vous pouvez faire apparaître les variables globales de vos scripts dans l'inspecteur, grâce au mot clé export :
export var player_speed =
200
IV. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.