Tutorial 1: le personnage contrôlé par les touches du clavier
Le but de ce tutorial est de contrôler un personnage avec les touches du clavier.
o vk_right : flèche droite
o vk_up : flèche haut
o vk_down : flèche bas
o keyboard_check(code) : indique si la touche a été enfoncée.
o direction : orientation (0-360, sens trigonométrique, inverse des aiguilles d'une
<_ n="2"/>montre, 0 = à droite).
o speed : vitesse en pixels par cycle
Pour une question d'organisation nous allons créer un script qui contrôle la marche et un script
qui contrôle l'arrêt. Comment choisir quel script exécuter ? La réponse est qu'il faut savoir quelles
touches sont appuyés, en particulier les touches directionnelles dans ce cas.
Donc nous allons créer
un script qui détecte les touches, ce script sera exécuté à chaque cycle, il fait partie de ce qu'on
apelle la "gameplay". Ce script détectera toutes les entrées claviers et suivant les touches appuyés il
exécutera les scripts qui intéragiront avec le personnages.
En savoir plus:
Structure et organisation
Tout d'abord nous allons donc créer un script où l'on détectera si une touche directionnelle est appuyé,
puis nous allons créer un script qui contrôle la marche et un script qui contrôle l'arrêt, et comme
dans tout jeu il nous faut un script d'initialisation des variables
Le script gameplay sera exécuté à chaque cycle, il détecte les touches du clavier qui sont appuyées et appelle les scripts walk ou stop selon les touches appuyées.
Le script d'initialisation
Alors ce script déclare les variables globales des touches clavier, comme ça si plus tard on veut utiliser le 8 du pavé numérique comme touche vers le haut il suffira de changer la variable global.up dans ce script.
ev_step Le script de gameplay
Le script Gameplay détecte les touches du clavier et exécute le script représentant le mouvement
appelé selon la touche appuyée.
Exemple : Si le joueur a appuyé B (coup d'épée), le script gameplay détecte que cette touche a été appuyé et exécute le
script qui contrôle l'épée.
Dans ce tutorial, il s'agit de détecter les touches clavier et de savoir donc s'il faut exécuter le script stop ou le script walk.
Donc on imagine une liste des différent cas possible par ordre de priorité :
- Les touches directionnelles appuyés sont de sens opposé -- script stop
- Une des touches directionnelles est appuyé -- script de walk
- si aucune touches directionnes n'est pas appuyée -- script stop
Dans le cas des touches opposés, il y a contradiction (le personnage ne peut pas aller en même temps
à droite et à gauche) donc pour éviter cela nous allons mettre que si cela arrive il ne faudra pas
éxécuter le script walk.
res_script Le script stop
Le script stop n'est pas à mettre dans un event il sera appelé par le script gameplay quand il faudra.
Il est très simple, la première ligne remet la variable objet de vitesse à 0.
La seconde ligne, quant à elle, définit une variable qui sera très utile : elle permet de savoir ce que le personnage fait.
res_script Le script walk
Ce script est très compliqué, étant donné sa complexité je vous donne une version simplifiée mais il faudra vous attendre à le réécrire plusieurs fois pour pouvoir l'améliorer.
Dans la première ligne, on retrouve notre variable qui stocke l'activité actuelle du perso, dans la seconde ligne, on règle la vitesse de l'objet, et dans la troisième on règle la vitesse d'affichage du sprite. (on sait jamais elle peut-être déréglée)
La variable self.direction détermine la direction que prend l'objet. Sa valeur est
calculée selon l'angle que fait la direction par rapport à la droite. Voici un schéma des directions :
La valeur 0 représente la gauche. La valeur 45 en haut à droite. Etc.
Dans la deuxième leçon nous verrons comment afficher un sprite qui dépend de la direction
Listing
Bon pour les "beginners du premier jour" ou simplement pour comparer ma méthode à la vôtre
, vous pouvez télécharger le fichier source