
Memento C# & Godot Engine
Voici une liste des différents codes source et syntaxes courantes utilisés en C# dans Godot engine.
Ce fichier est un canevas qui s'étoffera au fur et à mesure de mes expérimentations sur ce moteur de jeu.
Références/Sources:
- doc Godot: C#
- Les exemples de code sont basés sur la version 3.0 de Godot et peuvent être obsolètes
Écran & Images
L'affichage
-
Connaître la taille de la fenêtre
Screensize = GetViewportRect().Size;
-
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 */
- Changer la teinte d'une image
/* TODO */
-
Obtenir les dimensions d'une image
/* TODO */
Les sprites
-
Gérer des listes de sprites
/* TODO */
-
obtenir la taille d'un (Node) Sprite
Sprite sprite = (Sprite)getNode("sprite"); float shipWidth = sprite.Texture.GetWidth(); float shipHeidth = sprite.Texture.GetHeight();
-
obtenir la taille d'un (Node) AnimatedSprite - Méthode 1
AnimatedSprite animatedSprite = (AnimatedSprite)getNode("animatedSprite"); float shipWidth = animatedSprite.Frames.GetFrame("up",0).GetWidth(); float shipHeidth = animatedSprite.Frames.GetFrame("up",0).GetHeight();
-
obtenir la taille d'un (Node) AnimatedSprite - Méthode 2
var player_sprite = player.GetNode("Sprite") as Sprite; GD.Print(player_sprite.Texture.GetSize() * player_sprite.Scale);
Les Polices de caractères
-
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
Gestion des composants / entités
-
Récupérer une référence vers un noeud
private Node2D startPosition; startPosition = (Node2D) GetNode("StartPosition");
-
supprimer un composant / une entité
QueueFree();
-
charger une scene dynamiquement et l'instancier
PackedScene Sword = ResourceLoader.Load("res://Prefabs/Sword.tscn") as PackedScene; var swordObject = sword.Instance() as Sword;
-
Créer et gérer un signal
AddUserSignal("hit"); // connexion en interne // Note: OnStartButtonPressed est une méthode fonction de l'objet ou est exécuté le connect Connect("hit", this, "OnPlayerBodyEntered"); /// // connexion depuis un autre object startButton.Connect("pressed", this, "OnStartButtonPressed"); /// // émettre le signal (depuis un autre fonction) EmitSignal("hit");
-
exemple d'implémentation d'un évènement sur un bouton
using Godot; // IMPORTANT: the name of the class MUST match the filename exactly. // this is case sensitive! public class sayhello : Panel { public void _OnButtonPressed() { var label = (Label)GetNode("Label"); label.Text = "HELLO!"; } public override void _Ready() { GetNode("Button").Connect("pressed", this, nameof(_OnButtonPressed)); } }
Le Delta time
-
le delta time est directement passé à la fonction _Process
public class CustomLabel : Label { private int _accum; public override void _Process(float delta) { _accum++; Text = _accum.ToString(); } }
Gestion des entrées utilisateur
Le clavier
- intercepter une touche du clavier
if (Input.IsActionPressed("ui_up")) {
velocity.y -= 1;
}
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
/* TODO */
Physique
Gravité & Inertie
-
déplacement selon un objet ayant un angle de rotation (en degré)
/* TODO */
L'audio
Musique
-
charger et jouer une musique
private AudioStreamPlayer2D music; music = (AudioStreamPlayer2D) GetNode("Music"); music.Stop(); music.Play();
Sons
-
charger et jouer un son
private AudioStreamPlayer2D deathSound; deathSound = (AudioStreamPlayer2D) GetNode("DeathSound"); deathSound.Play(); deathSound.Stop();
Système
Fichiers
-
lire un fichier texte
/* TODO */
Divers
Gestion de l'application
-
Quitter l'application
/* TODO */
-
Exemple d'initialisation d'une application
/* TODO */
Publication
Sous Windows
TODO
Sous Android
TODO
Sous IOS
TODO
Sous MacOS
TODO
Sous Linux
TODO