04 Décembre 2018

Voici une liste des différents codes source et syntaxes courante utilisées en GDScript dans Godot engine.
Ce fichier est un canevas qui s'étoffera au fur et à mesure de mes expérimentations sur ce langage .
Godot Engine & GDScript
Syntaxe de base
Les variables et les types simples
- exemple
# Variables var my_var # no value assigned, no type either my_var = 5 # assigning value, type is int my_var = "Hello world" # now my_var is a string var empty = null var my_float = 5.0 var bool_true = true or false const MY_CONST = 200 const MAX_PLAYER_SPEED = 500 # Containers var my_array = [1, "cat", false, 18.56, 'whatever'] var my_dict = { "one": 1, "two": 2, "three": 3, "four": 4 } my_dict = {one = 1, two = 2, three = 3, four = 4 } my_dict.four = 4 my_dict["five"] = 5
Les chaînes formatées
-
exemple
# Define a format string with placeholder '%s' var format_string = "We're waiting for %s." # Using the '%' operator, the placeholder is replaced with the desired value var actual_string = format_string % "Godot" # output: "We're waiting for Godot." print(actual_string) # Multiple placeholders var format_string = "%s was reluctant to learn %s, but now he enjoys it." var actual_string = format_string % ["Estragon", "GDScript"] # output: "Estragon was reluctant to learn GDScript, but now he enjoys it." print(actual_string) # Define a format string var format_string = "We're waiting for {str}" # Using the 'format' method, replace the 'str' placeholder var actual_string = format_string.format({"str":"Godot"}) # output: "We're waiting for Godot" print(actual_string)
Les conditions et les boucles
-
exemple
if user_answer == "B" and my_var == 1: # leave the condition pass elif user_answer == "C" or my_int = 5: do_something() else: do_something_else() # tests if a value is in an array var my_array = [1, "cat", false, 18.56, 'whatever'] if my_var in my_array: do_something() else: do_something_else() for quote in quotes: quote.capitalize() var y = [1,2,3,4] for x in y: print(x) for x in range(8): print(x) while x < 10: print(x)
Les méthodes (fonctions)
- exemple
func get_random_item_in(my_list): # TODO: get a random number item = my_list[0] # get a quote from a list print(item) # show the quote in the interpreter return "program is over" # returned value
Écran & Images
L'affichage
-
Connaître la taille de la fenêtre
position = get_viewport_rect().size.y:
-
Changer la taille de la fenêtre
TODO
- passage en Plein écran ou mode fenêtré
TODO
Les Images
-
Afficher une image
TODO
-
Effets sur les images
- Effectuer un effet miroir horizontal
TODO
- Effectuer un effet miroir horizontal
-
Changer la teinte d'une image
TODO
- Obtenir les dimensions d'une image
TODO
Les sprites
- Gérer des listes de sprites
stars_width = texture.get_width() stars_height = texture.get_height()
Les Polices de caractères
-
Ajouter le fichier contenant les polices au Content Pipeline
Voir l'explication dans le paragraphe sur les images - calculer la taille d'un texte dans une police donnée
TODO
Les Textes
- Afficher un texte dans une police donnée
TODO
Le GamePlay
Notions utiles
- Récupérer une référence vers un noeud
TODO
- supprimer un composant / une entité
TODO
- Créer et émettre un signal
# code in the signal emitter script (player) signal direction_changed func _physics_process(delta): emit_signal('direction_changed', input_direction) #...
- Recevoir et gérer un signal
# code in the signal receiver script player_node = get_node('player') player_node.connect("direction_changed", self, '_on_Player_direction_changed') #... func _on_Player_direction_changed(direction): #...
- exemple d'implémentation d'un évènement sur un bouton
extends Panel func _on_button_pressed(): get_node("Label").text = "HELLO!" func _ready(): get_node("Button").connect("pressed", self, "_on_button_pressed")
- helper pour les collisions
# first method: delta is already applied and a slide movement is also applied on collision velocity = input_direction.normalized() * speed move_and_slide(velocity) # second method: just a basic collision var motion = input_direction.normalized() * speed * delta var collider = move_and_collide(motion)
Le Delta time
- le delta time est directement passé à la fonction _Process
extends Label var accu = 0 func _process(delta): accu += 1 text = str(accu) # text is a built-in label property
Gestion des entrées utilisateur
Le clavier
- intercepter une touche du clavier
input_direction = Vector2() input_direction.x = int(Input.is_action_pressed("move_right")) - int(Input.is_action_pressed("move_left")) input_direction.y = int(Input.is_action_pressed("move_down")) - int(Input.is_action_pressed("move_up"))
La souris
-
Afficher le curseur de la souris
TODO
-
Connaître l'état des boutons de la souris
TODO
- Connaître la position de la souris
x = get_global_mouse_position().x y = get_global_mouse_position().y
Physique
Gravité & Inertie
- déplacement selon un objet ayant un angle de rotation (en degré)
TODO
L'audio
Musique
- charger et jouer une musique
TODO
Sons
- charger et jouer un son
TODO
Système
Fichiers
- lire un fichier texte
TODO
Divers
Gestion de l'application
-
Quitter l'application
TODO
- Exemple d'initialisation d'une application
TODO