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 !