Accueil Article Forum Jeux RM Script RM XP Téléchargement Tutoriaux


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 !