Outils pour utilisateurs

Outils du site


dindomoteur_portail_du_moteur_de_metroidvania_orleanais

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dindomoteur_portail_du_moteur_de_metroidvania_orleanais [2022/03/20 19:11] Simon Deplatdindomoteur_portail_du_moteur_de_metroidvania_orleanais [2022/03/27 13:42] (Version actuelle) Simon Deplat
Ligne 92: Ligne 92:
 Le moteur étant particulièrement chauvin, je commence par **utiliser l'interface d'association des entrées utilisateurs ( //Projet > Paramètres du projet... > Contrôles// ) pour associer les touches du clavier aux mots-clefs suivants** : Le moteur étant particulièrement chauvin, je commence par **utiliser l'interface d'association des entrées utilisateurs ( //Projet > Paramètres du projet... > Contrôles// ) pour associer les touches du clavier aux mots-clefs suivants** :
  
-  * q : "gauche" +  * "gauche" 
-  * d : "droite" +    * q 
-  * s : "bas" +    * Left Stick Left 
-  * z : "haut" +  * "droite" 
-  * espace "espace"+    * d 
 +    * Left Stick Right 
 +  * "bas" 
 +    * s 
 +    * Left Stick Down 
 +  * "haut" 
 +    * z 
 +    * Left Stick Up 
 +  * "espace" 
 +    * espace 
 +    * Xbox A 
 +  * "interagir" 
 +    * E 
 +    * Xbox X
  
 Même s'il est **conseillé d'associer des mot-clefs par action plutôt que par touche**, les différentes utilisations de la touche //espace// possibles m'amènent à garder une balise généraliste pour ce cas particulier. Même s'il est **conseillé d'associer des mot-clefs par action plutôt que par touche**, les différentes utilisations de la touche //espace// possibles m'amènent à garder une balise généraliste pour ce cas particulier.
Ligne 132: Ligne 145:
   * si la ressource externe est chargée également, celle-ci a la priorité sur les méthodes décrite ci-dessus.   * si la ressource externe est chargée également, celle-ci a la priorité sur les méthodes décrite ci-dessus.
  
-Pour mettre en place le nœud global, je créé un script global.gd situé dans le répertoire //src/Main/// puis utilise le menu //Projet > Paramètres du projet... > AutoLoad// pour lui assigner le nom //Global//.+Pour mettre en place le nœud global, je créé une nouvelle scène de type //Node// nommée //Global.tscn// et lui assigne un script //global.gd//, enregistrés dans le répertoire //src/Main/// . Puis j'utilise le menu //Projet > Paramètres du projet... > AutoLoad// pour assigner le nom //Global// à la scène.
  
 **Le mot //Global// permet maintenant d'y accéder depuis n'importe quelle scène** ( exemple : //print( Global.attribut )// ). **Le mot //Global// permet maintenant d'y accéder depuis n'importe quelle scène** ( exemple : //print( Global.attribut )// ).
 +
 +Cette scène permettra notamment de **mettre en place un //Affichage Tête Haute// (//ATH//)** à l'aide d'un noeud //CanvasLayer// .
 +
 +Pour éviter de rendre les nœuds qui utilisent cette scène dépendants de celle-ci, on pourra **vérifier au préalable qu'elle est bien chargée avant d'y accéder**, par exemple pour le //Joueur// qui accède à une variable de gravité stockée dans //global.gd// :
 +
 +<code>
 +_gravite = 50
 +
 +[...]
 +
 +func _ready():
 + if get_tree().root.has_node("Global"):
 + _gravite = Global.gravite
 +</code>
 +
 +Ci-dessus, vous pouvez voir qu'il y a déjà une valeur assignée par défaut à //_gravite// : il est important d'avoir des valeurs de sécurité pour ne pas casser le nœud si la dépendance est manquante. Cette méthodologie favorise [[https://fr.wikipedia.org/wiki/Couplage_(informatique)|le couplage faible]].
  
 ===Ajout du paramètre de gravité=== ===Ajout du paramètre de gravité===
  
-Au lieu d'utiliser l'API de Godot, nous centralisons la gravité via le noeud //Global// :+Au lieu d'utiliser l'API de Godot, nous centralisons la gravité via le nœud //Global// :
 <code> <code>
 ... ...
-var gravite = 100+var gravite = 50
 ... ...
 func _ready(): func _ready():
Ligne 150: Ligne 179:
  
  
-===Script actuel du nœud global ( global.gd )===+====Script actuel du nœud global ( global.gd )===
 <code> <code>
 extends Node extends Node
  
-var gravite = 100+var typeEntree = "clavier" 
 +var zoneMorte = 0.3 
 + 
 +var gravite = 50
  
 func _ready(): func _ready():
  ProjectSettings.set_setting( "physics/2d/default_gravity", gravite )  ProjectSettings.set_setting( "physics/2d/default_gravity", gravite )
 +
 </code> </code>
  
dindomoteur_portail_du_moteur_de_metroidvania_orleanais.1647803470.txt.gz · Dernière modification : 2022/03/20 19:11 de Simon Deplat