|
---
|
|
|
|
Cours
: Personnage qui suit le héros
|
|
Difficulté
:
|
|
|
|
---
|
| Note |
|
Ce
tutorial requière beaucoup de connaissance sur
RPG Maker 2000. Je vais utiliser des éléments
spéciaux incluant les Variables, les Fork Condition,
et les Cycles. SVP soyez sur que vous connaissez ces
concepts de base avant d'essayer de suivre mon exemple.
!! Attention !! Ce tutorial est basé sur les
Event de RPG Maker 2000 1.05b, donc si vous avez une
version moins récente, il est possible que certain
nom dans les Event ne soit pas les mêmes !
|
|
---
|
| But
de ce tutorial |
|
Il
va vous expliquer comment créer un groupe de
"NPC" (objet ou perso non contrôler
par le joueur) qui se déplace en suivant les
mouvements de votre Hero. Ces NPC peuvent être
utilisés pour visualiser les autres perso de
votre équipe ou bien pour tous ce que vous voulez
!
|
|
---
|
| 1.
Avant-goût |
|
Pour
mieux comprendre la technique que je vais vous montrer,
examinez d'abord les 5 étapes suivantes. C'est
la méthode basique pour mon syteme de "chenille":
|
|
1.Déterminer
les coordonnées du Hero (X et Y)
2.Déterminer les coordonnées du NPC (X
et Y)
3.Déterminer la position du Hero par rapport
au NPC
4.Déplacer le NPC en haut,à droit,en bas
ou à gauche en fonction de la position du Hero
5.Répéter le tout
|
|
---
|
| 2.
Créer des variables |
|
La
première chose que nous allons faire, c'est de
créer un set de variables qui vont enregistrer
les coordonnées (coordonnée sur l'axe
X et Y) des différents protagonistes du tutorial.
Pour cette exemple, nous allons prendre le Hero comme
leader de la "formation". Créer 2 variables
HERO-X et HERO-Y
qui enregistreront les coordonnées sur l'axe
X (HERO-X) et sur
l'axe Y (HERO-Y)
du Hero. Donc, commençons avec un seul NPC qui
suit, alors créez aussi un set de variables pour
lui, appelez ces variables NPC1-X
et NPC1-Y.
|
|
---
|
| 3.
Créer un Event |
|
Ok,
maintenant que nous avons nos variables prêtes,
c'est le moment de les utiliser. Après que vous
avez choisi la position de départ de votre Hero
sur la carte, créez un Event sur un des carrés
adjacent et nommé le NPC1. Laissez toute les
Event Condition blanches et mettez le graphique que
vous voulez. Dans Movement Type mettez Stay Still (tous
les mouvements seront déterminé par la
position du Hero, plus loin dans le tutorial). Soyez
sur de mettre l' Event Start Condition sur Parallel
Process et mettez Position sur Below Hero. Le Movement
Speed doit être égal à la vitesse
de votre Hero, si vous n'avez pas changé sa vitesse,
mettez 4 : Normal.
|
|
---
|
| 4.
Créer un NPC |
|
Ok,
maintenant, on passe à la partie difficile. Je
vais essayer d'aller assez lentement et d'expliquer
chaque étape. La première chose que nous
allons faire, c'est de créer une boucle et de
la "mettre sur pause",j'entends par la que
nous allons y mettre une commande Wait de 0.1 seconde,
sinon la boucle va aller aussi vite qu'elle peut, donc
va trop faire travailler votre processeur, donc ralentir
votre jeu. Voici ce que vous devez avoir sur votre écran
:
|
|
<>CYCLE
<>Wait: 0.1s.
<>
<>:END Cycle
<>
|
|
Maintenant
que nous avons configuré notre boucle, nous avons
besoin d'enregistrer les coordonnées de notre
Hero, dans les bonnes variables. Pour faire ça,
nous allons utiliser la commande Change Variable. Insérez
cette commande directement en dessous de la commande
Wait et faites comme suit dans la fenêtre Variable
Management. Pour Choose Variable mettez One et 0001:HERO-X,
Operation mettez Set, Operand mettez Event: Hero : X
coordinate. Quand vous cliquez OK, vous devriez avoir
ceci sur votre écran :
|
|
<>CYCLE
<>Wait: 0.1s.
<>Variable CH:[0001:HERO-X]Set, Hero X pos
<>
<>:END Cycle
<>
|
|
Maintenant
créez une autre commande Change Variable, et
configurez-la pour enregistrer les coordonnées
Y du Hero. Et créez encore 2 autre commandes
pour enregistrer les coordonnées X et Y du NPC1.
Pour le NPC1 (ainsi que les suivants), désigné
le par This Event. Voici ce que ça donne :
|
|
<>CYCLE
<>Wait: 0.1s.
<>Variable CH:[0001:HERO-X]Set, Hero X pos
<>Variable CH:[0002:HERO-Y]Set, Hero Y pos
<>Variable CH:[0003:NPC1-X]Set, This Event X pos
<>Variable CH:[0004:NPC1-Y]Set, This Event Y pos
<>
<>:END Cycle
<>
|
|
A
ce point, nous avons terminé les 2 premières
étapes de l'idée de base. Cette boucle
va enregistrer la position du Hero et du NPC1, et ce
toute les 0.1 seconde. Nous allons déterminer
la position du Hero par rapport au NPC1. Comme ça
nous pouvons déplacer le NPC1 en conséquence.
Commençons par faire la direction Nord (haut).
Pour faire ça, nous allons créer une Fork
Condition. Ajoutez une Fork Condition en dessous de
la dernière variable et configurez-la comme ceci:
Condition, Variable: 0002:HERO-Y ; Variab: 0004:NPC1-Y
; Smaller. Voici ce que ça donne :
|
|
<>CYCLE
<>Wait: 0.1s.
<>Variable CH:[0001:HERO-X]Set, Hero X pos
<>Variable CH:[0002:HERO-Y]Set, Hero Y pos
<>Variable CH:[0003:NPC1-X]Set, This Event X pos
<>Variable CH:[0004:NPC1-Y]Set, This Event Y pos
<>Fork Optn:Varbl[0002:HERO-Y]- V[0004] less than
<>
:END Case (Fin de la Fork)
<>
<>:END Cycle
<>
|
|
Ok,c'est
parfait, mais on doit maintenant mettre une action basée
sur cette condition. Dans cette case l'action va être
de déplacer le NPC1 dans la bonne direction (ici,
on a mis que si l'Hero est plus haut que le NPC1 alors....
Donc on va déplacer le NPC1 en haut). Pour faire
ça créez une commande Move Event entre
la commande Fork Condition et sa case fermante (:END
Case). Mettez Objet Character sur This Event ; Movement
Frequency sur 8, et insérez Step Up dans Movement
Route. Soyez sur que Repeat Action est sur OFF en enlevant
la coche du carré. Voila, ça donne ça
:
|
|
<>CYCLE
<>Wait: 0.1s.
<>Variable CH:[0001:HERO-X]Set, Hero X pos
<>Variable CH:[0002:HERO-Y]Set, Hero Y pos
<>Variable CH:[0003:NPC1-X]Set, This Event X pos
<>Variable CH:[0004:NPC1-Y]Set, This Event Y pos
<>Fork Optn:Varbl[0002:HERO-Y]- V[0004] less than
<>Move Event...: This Event,Up
<>
:END Case (Fin de la Fork)
<>
<>:END Cycle
<>
|
|
Maintenant,
si l'Event détermine que l'Hero est au Nord du
NPC1, NPC1 va se déplacer en direction du haut
jusqu'a ce qu'il soit à la même hauteur
que le Hero. Bien sure cet Event ne recouvre qu'une
des 4 directions, mais je suis sûr que vous arriverez
à faire les autre directions tout seul. Au cas
ou, voici l'Event complet, pour les 4 directions.
|
|
---
|
| 5.
Liste complète de l'Event |
|
En
dessous, c'est ce qu'il doit avoir sur votre écran
après avoir fini l'Event. J'ai ajouté
quelque note, elles sont entre parenthèses et
en noire :
|
|
<>CYCLE
<>Wait: 0.1s. (ralentissement
de la boucle)
<>Variable CH:[0001:HERO-X]Set, Hero X pos
<>Variable CH:[0002:HERO-Y]Set, Hero Y pos
<>Variable CH:[0003:NPC1-X]Set, This Event X pos
<>Variable CH:[0004:NPC1-Y]Set, This Event Y pos
(on prend les coordonnées
de tout le monde)
(Direction Nord)
<>Fork Optn:Varbl[0002:HERO-Y]- V[0004] less than
<>Move Event...: This Event,Up
<>
:END Case (Fin de la Fork)
(Direction Sud)
<>Fork Optn:Varbl[0002:HERO-Y]- V[0004] more than
<>Move Event...: This Event,Down
<>
:END Case (Fin de la Fork)
(Direction Est)
<>Fork Optn:Varbl[0001:HERO-X]- V[0003] more than
<>Move Event...: This Event,Right
<>
:END Case (Fin de la Fork)
(Direction Ouest)
<>Fork Optn:Varbl[0001:HERO-X]- V[0003] less than
<>Move Event...: This Event,Left
<>
:END Case (Fin de la Fork)
<>
<>:END Cycle
<>
|
|
---
|
| 6.
Ajouter d'autres NPC |
|
Si
vous avez réussi à suivre les étapes
précédentes, c'est très simple.
Tous ce que vous avez à faire c'est de créer
un nouvel Event pour chaque NPC et référencer
ses coordonnées par rapport au NPC qui est devant
lui, et non plus au HERO. Par exemple, NPC1 se déplaçait
par rapport au coordonnée du Hero, et bien faites
que NPC2 se déplace par rapport à NPC1,
NPC3 par rapport à NPC2 etc... Gardez à
l'esprit que chaque NPC doivent avoir leur propre set
de variables. Donc, par exemple, au début de
l'event du NPC2, juste après la commande Wait,
mettez :
<>Variable CH:[0003:NPC2-X]Set,
This Event X pos
<>Variable CH:[0003:NPC2-Y]Set, This Event Y pos
|
|
---
|
| 7.
L'Event Slip Through |
Comme
vous l'avez peut-être remarqué, le scripte
d'avant à quand même des limitation. Vous
ne pouvez pas revenir en arrière en passant par-dessus
les NPC, donc c'est possible que votre Hero se retrouve
complètement pris au piège dans certaine
de vos carte. Pour éviter ceci, nous allons utiliser
la commande Slip Through. Ajouter simplement ces quelques
ligne avant et après le déplacement du
perso:
Start
Slip Though
Step Up
End Slip Though
C'est
très simple. Faite le pour chaque mouvement
de NPC et vous aurez alors 100% de liberté
de mouvement. Mais il y a 2 hic:
1.Quand vous vous arrêtez, les NPC se place
dessous vous.
2. Les NPC passeront à travers tous les décors
et objet !(ça peut faire un peux con)
Donc vous avez 2 possibilité:
soit vous adapté vos cartes pour pas que le
perso reste bloqué.
soit vous avez 100% de liberté de mouvement,
mais ça fait un peu con (des fois). À
vous de choisir !
|
|
---
|
| 8.
Ne pas oublier |
1.
Ce code n'est en aucun cas parfait. Si vous trouvez
un bug ou qqch. d'autre, faite-le moi savoir.
2.
Quand vous vous téléportez vers une
autre carte, vous devez recopier (faites copier/coller)
les Event NPC1,2,3.. à côté du
point où vous êtes téléporté.
De plus, s'il y a plusieurs points de téléportation
dans la carte, vous devez utiliser des Switch pour
mettre vos NPC à différent endroit (cela
dépend où vous êtes téléporté).
3.
Si vous voulez utiliser cette technique pour visualiser
un membre de votre équipe, penser que ce membre
peut ou ne peut pas être dans votre équipe
quand vous entrez dans la carte, donc utilisez la
condition Hero Need pour chaque perso.
4.
Le leader n'est pas obligé d'être le
Hero ou bien un humain. Cela peut être un NPC
qui conduit le groupe. Très utile quand vous
voulez partager votre équipe (un groupe part
d'un côté et le vôtre n'importe
où), ou pour faire un NPC qui se déplace
aléatoirement avec quelque chose qui le suit.
Un garçon et son chien par exemple.
5.
Quand vous d&eactue;signer un NPC dans les variables
ou dans Move Event, désigner-le avec
This Event !! Sinon quand vous changerez de carte,
ce sera un autre Event qui vous suivera !
|
|
---
|
|
|
|
---
|
| |
|
|