CREER UN SYSTEME DE COMBAT AU PISTOLET
Par Naked-Snake
Salut
à tous, je vais vous montrer comment faire un système de combat au
pistolet (ou n’importe quelle arme), ou « gunfight ». Il faut savoir
que ce n’est pas une mince affaire, que cela nécessite une bonne
connaissance des variables ainsi qu’une bonne dose de patience…
Mais je ne vais pas vous décourager, tout vous est décrit ici.
Nous
allons créer un système de combat ou l’on peut afficher 3 ennemis sur
la carte et où le héros tirera avec la touche majuscule.
Pour commencer voici les variables que vous devez créer :
[héros X] [héros Y] ;
[ennemi1 X] [ennemi1 Y] [vie ennemi1] ;
[ennemi2 X] [ennemi2 Y] [vie ennemi2] ;
[ennemi3 X] [ennemi3 Y] [vie ennemi3] ;
[tir X] [tir Y] ;
[touche]
Créez aussi les interrupteurs suivants :
(tir)
(ennemi1 mort)
(ennemi2 mort)
(ennemi3 mort)
Voilà pour les préparatifs, passons maintenant à la partie programmation.
Pour commencer créez un
événement commun en processus parallèle que nous
appellerons Héros X, Y.
Dedans mettez :
Attendre 0.1 sec (pour ne pas ralentir le jeu)
Variable [héros X] = Héros coordonnée X
Variable [héros Y] = Héros coordonnée Y
Comme vous l’avez remarqué, cet événement va enregistrer la position du héros au cours du jeu.
Ensuite créez un autre
événement commun en processus parallèle appelez le
touche tir et dedans mettez :
<>Attendre 0.1 sec (toujours pour éviter les ralentissements)
<>Appui
d’une touche ;[touche] (on enregistre la valeur de la touche pressée
dans la variable touche, dans cette boite de dialogue cochez seulement
la touche majuscule qui correspond à la valeur 7, et ne décochez pas la
case « Attendre jusqu’à ce qu’une touche soit pressée »)
<>Condition : si variable [touche] = 7
Faire
<>Interrupteur : (tir) activé
<>Attendre 0.5 sec (limite de temps avant le prochain tir)
Sinon
<>
<>
Voilà pour cet événement
qui va détecter l’appui de la touche majuscule et donc
activer le tir.
Puis
sur chaque carte vous allez devoir créer un événement en processus
parallèle avec comme condition de l’événement que l’interrupteur (tir)
soit activé (à gauche de la page d’événement).
Mettez le aussi en processus parallèle,
comme position au dessus du héros, mettez le en vitesse
très rapide.
Vous pouvez lui donner l’apparence d’une balle pour faire plus réaliste.
Dans les commandes entrez :
<>Modifier
la position d’un événement : cet
événement X [héros X], Y [héros Y]
<>Jouer un effet sonore (jouez un effet sonore de tir si vous voulez)
<>Condition : si héros haut direction fixée
Faire
<>Déplacer cet événement : haut x 8 (nous mettrons une portée de 8 cases)
<>Attendre 0.4 sec
<>Interrupteur : (tir) désactivé
Sinon
<>Condition :si héros droite direction fixée
Faire
<>Déplacer cet événement :droite x 8
<>Attendre 0.4 sec
<>Interrupteur : (tir) désactivé
Sinon
<>Condition : si héros bas direction fixée
Faire
<>Déplacer cet événement : bas x 8
<>Attendre 0.4 sec
<>Interrupteur : (tir) désactivé
Sinon
<>Condition : si héros gauche direction fixée
Faire
<>Déplacer cet événement : gauche x 8
<>Attendre 0.4 sec
<>Interrupteur : (tir) désactivé
Sinon
<>
Fin
Fin
Fin
Fin
Voilà
pour l’événement qui fera office de tir, en résumé, cet événement se
déplacera de 8 cases dans la direction du héros lorsque la touche
majuscule sera pressée (le « attendre 0.4 » secondes sert à attendre le
moment où le tir arrive au bout des 8 cases pour l’effacer).
Maintenant reste à créer les
ennemis et à définir les moments où ils seront
blessés par le tir.
Nous allons considérer que les ennemis possèdent 5 PV.
Créez
donc trois événement, dans la première page de chaque événement (les
ennemis) mettez le déplacement du personnage « marche vers le héros »,
8 en fréquence.
Comme déclencheur, mettez contact
événement / héros (lorsque
l’événement entre en contact avec le héros).
Dans
les commandes mettez ce que vous voulez : cela sera ce qui se passera
lorsque l’ennemi touchera le héros, donc lorsque votre personnage
subira des dégâts (n’oubliez pas de retirer des PV au héros)
Créez
une deuxième page dans chaque événement (les ennemis) mettez comme
condition de l’événement (toujours à gauche de la page) que
l’interrupteur (ennemi1, 2, ou 3) selon l’ennemi correspondant, soit
activé.
En déclencheur mettez presser une touche,
cela n’a pas d’importance, vu que cela correspond au moment
où l’ennemi est mort.
Ne lui mettez aucun mouvement.
Laisser l’emplacement des commandes vierge, et ne lui mettez aucune apparence.
Voilà pour les ennemis (n’oubliez pas de faire 3 évènements, 1 pour chaque ennemi).
Pour
résumer, les 3 ennemis vont se diriger vers le héros et lorsqu’ils
entrerons en contact avec lui ils lui infligeront des dommages, mais
lorsque l’interrupteur mort sera activé, c’est à dire lorsque vous
l’aurez tué, il ne fera plus rien, il sera inactif, « mort » si vous
préférez.
Nous devons aussi enregistrer la position du tir lorsque vous tirerez sur vos ennemis :
Sur
chaque carte où se trouve l’événement tir, créez un événement en
processus parallèle avec comme condition que l’interrupteur tir soit
activé, dans les commandes mettez :
<>Condition : si interrupteur (tir) est activé
Faire :
<>Variable [tir X] = coordonnée X de l’événement tir
<>Variable [tir Y] = coordonnée Y de l’événement tir
Sinon :
<>Variable [tir X] = 0
<>Variable [tir Y] = 0
Fin
Lorsque
vous tirerez, la position de l’événement tir sera enregistrée et nous
permettra de savoir si le tir passe sur des ennemis.
Il faut aussi enregistrer les positions des ennemis :
Dans chaque carte créez un événement en processus parallèle, dans les commandes mettez :
<>Variable [ennemi1 X] = coordonnée X de l’événement ennemi1
<>Variable [ennemi1 Y] = coordonnée Y de l’événement ennemi1
<>Variable [ennemi2 X] = coordonnée X de l’événement ennemi2
<>Variable [ennemi2 Y] = coordonnée Y de l’événement ennemi2
<>Variable [ennemi3 X] = coordonnée X de l’événement ennemi3
<>Variable [ennemi3 Y] = coordonnée Y de l’événement ennemi3
Voilà, la position de chaque ennemi est enregistrée.
Il
faut maintenant définir ce qu’il se passera lorsque l’événement tir
passera sur les ennemis, c’est à dire lorsque vous leur tirerez dessus.
Pour
cela dans chaque carte où seront présents les ennemis, créez un
événement sur cette carte en processus parallèle, et comme commandes
mettez :
<>Condition : si interrupteur (tir) activé
Faire :
<>Condition : si variable [tir X] = variable [ennemi1 X]
Faire :
<>Condition : si variable [tir Y] = variable [ennemi1 Y]
Faire :
<>Condition : si interrupteur (ennemi1 mort) désactivé
Faire :
<>Variable [vie ennemi1] – 1
<>Flasher événement : ennemi1 (pour montrer qu’il s’est fait toucher)
<>Condition : si variable [vie ennemi1] est inférieure ou égale à 0
Faire :
<>Jouer un effet sonore (pour montrer que l’ennemi est mort)
<>Modifier interrupteur : (ennemi1 mort) activer
Sinon :
<>Déplacer
événement : ennemi1 ; regarde le héros, fixe la direction, fuit le
héros de 1 pas, annuler fixation (pour simuler le recul de l’ennemi
lorsqu’il est touché)
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
<>Condition : si interrupteur (tir) activé
Faire :
<>Condition : si variable [tir X] = variable [ennemi2 X]
Faire :
<>Condition : si variable [tir Y] = variable [ennemi2 Y]
Faire :
<>Condition : si interrupteur (ennemi2 mort) désactivé
Faire :
<>Variable [vie ennemi2] – 1
<>Flasher événement : ennemi2 (pour montrer qu’il s’est fait toucher)
<>Condition : si variable [vie ennemi2] est inférieure ou égale à 0
Faire :
<>Jouer un effet sonore (pour montrer que l’ennemi est mort)
<>Modifier interrupteur : (ennemi2 mort) activer
Sinon :
<>Déplacer
événement : ennemi2 ; regarde le héros, fixe la direction, fuit le
héros de 1 pas, annuler fixation (pour simuler le recul de l’ennemi
lorsqu’il est touché)
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
<>Condition : si interrupteur (tir) activé
Faire :
<>Condition : si variable [tir X] = variable [ennemi3 X]
Faire :
<>Condition : si variable [tir Y] = variable [ennemi3 Y]
Faire :
<>Condition : si interrupteur (ennemi3 mort) désactivé
Faire :
<>Variable [vie ennemi3] – 1
<>Flasher événement : ennemi3 (pour montrer qu’il s’est fait toucher)
<>Condition : si variable [vie ennemi3] est inférieure ou égale à 0
Faire :
<>Jouer un effet sonore (pour montrer que l’ennemi est mort)
<>Modifier interrupteur : (ennemi3 mort) activer
Sinon :
<>Déplacer
événement : ennemi3 ; regarde le héros, fixe la direction, fuit le
héros de 1 pas, annuler fixation (pour simuler le recul de l’ennemi
lorsqu’il est touché)
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
Sinon :
Fin
Pour
résumer, lorsque l’événement tir passe au dessus d’un ennemi, on efface
le tir, l’ennemi prend 1 point de dommage subit un flash lumineux pour
montrer qu’il s’est fait toucher, si ses points de vie sont inférieurs
ou égaux à 0, il meurt (l’interrupteur ennemi1, 2 ou 3 est activé),
sinon il est encore vivant et subit un recul d’une case en arrière.
Voilà
pour ce système de combat, et surtout dans les commandes de l’événement
qui vous téléporte à la carte où se trouvent les ennemis, ajoutez bien
les commandes suivantes :
<>Interrupteur (ennemi1 mort) désactiver
<>Interrupteur (ennemi2 mort) désactiver
<>Interrupteur (ennemi3 mort) désactiver
<>Variable [vie ennemi1] = 5 (PV de départ de l’ennemi, ici 5)
<>Variable [vie ennemi2] = 5
<>Variable [vie ennemi3] = 5
Voilà,
votre système de gunfight est prêt, j’ai pris plaisir à écrire ce
tutorial, j’espère que vous en avez compris le principe. Vous pouvez
l’adapter à votre guise, par exemple ajouter plus d’ennemis (pas trop
sinon le jeu est ralentit) il faudra alors ajouter des interrupteurs en
plus, ainsi que d’autres variables… A vous de choisir !