M   E   N   U

  N  E  W  S
    News
       Mugen News
       Site News
       Old News

 D  O  W  N  L  O  A  D
    Characters
       Athena 2001
       Athena 2002
       Neo Athena
       Evil Ryu
       Violent Ken
       Lynn Baker
       Karin
       Sissy
       Sakura
    Hosted
       Diao
       Kyo
    Stages
       Neogeo 1
       Neogeo 2
       Neogeo 3
       Neogeo 4
       EFZ
       EFZ 2
       Melty Blood
       Others
    Add-ons
       Screen Pack
       Tools/Others
       Video

 W  I  P
    Characters
       Mina

 D  O  C  S
    Tutoriels (FR)
       Personnages
       Stages
       Barres de vie
       Screen Pack
       Intro-Fin
    FAQ (FR)
       Lexique
       Mugen
       Personnages
       Stages
       Screen Pack
       Communauté
    Mugen Torch
       Text in French
       Text in English

 A  R  T  S
       Iris-Net



Tutorial Création et Adaptation de personnages sous Mugen par Sunny : 4eme Partie


Projections (suite)


2ème étape : le projeté


Nous allons à présent créer l'animation et le state qu'utilisera le perso en train d'être projeté.

L'animation


Comme je l'ai indiqué, il n'existe pas dans Mugen d'animation ou de numéros d'animation prévus pour les persos projetés. C'est au créateur de les créer en fonction de son personnage. Mais comment peut faire ce dernier alors que les sprites sont différents pour chaque perso et sont organisés différemment dans chaque SFF ?

En fait il existe tout un groupe de sprites que tous les persos ont en commun : les sprites standard, ceux des groupes 5000 à 5070.
Dans ces sprites, tous les persos sont dans une position similaire : avec la tête en arrière pour les 5000, en avant pour les 5010, accroupis pour les 5020, etc... Pour créer l'animation du perso projeté, nous utiliserons ces sprites. Ainsi, quel que soit le perso que nous projeterons, ce dernier sera toujours dans la même position.

En pratique, projetez votre propre perso dans son jeu original et regardez dans quelles positions il se retrouve. Puis, essayez de retrouver ces mêmes positions ou des positions similaires avec les sprites standards. Parfois, vous aurez à tourner les sprites dans le fichier AIR (paramètres H et V) pour avoir quelque chose de ressemblant. Au final, cela devrait donner quelque chose du genre :

; Ennemy Animation
[Begin Action 845]
5011,20, 0,0, 7
5071,10, 0,0, 4, HV
5061,10, 0,0, 3, H
5071,10, 0,0, 3
5011,20, 0,0, 3
5071,10, 0,0, 3, HV
5030,50, 0,0 ,-1

Personnellement, lorsque l'adversaire décolle du sol, je préfère utiliser les sprites centrés à la ceinture (5xx1). Comme les persos sont de taille différente, cela me permet de les centrer plus précisément en calculant la position de leur centre par rapport à celui de mon perso. Par contre, si le perso reste tout le temps sur ses pieds, j'utilise les sprites centrés plus traditionnellement (5xx0).

Que ce soit clair : le perso projeté n'utilisera pas vos propre sprites ; il utilisera les numéros de sprites que vous lui aurez indiqué. Ce qui veut dire que si vous lui donnez un numéro de sprite qui existe dans votre SFF mais pas dans le sien, il n'affichera rien de tout pour ce sprite lorsqu'il jouera l'animation!

Le state


Première chose à indiquer au perso : quelle animation il doit jouer.

[State 845, animation]

type = ChangeAnim2
trigger1 = time = 0
value = 845

L'action ChangeAnim2 indique à Mugen que le projeté doit jouer NOTRE animation. Pour lui faire jouer une animation de SON propre fichier AIR, il faut utiliser l'action ChangeAnim.

Par ailleurs, durant la projection, il se peut que les corps des persos se superposent. Or, comme je l'ai indiqué lorsque j'ai présenté pour la première fois le CNS (dans la troisième partie du tutorial), les corps des persos ne le peuvent normalement pas. Pour le rendre possible il faut utiliser l'action :

[State 845, ghost]
type = PlayerPush
trigger1 = 1
value = 0

Si le PlayerPush est désactivé (= 0), mugen ne cherchera pas à détecter si les corps sont en collision.

Si l'animation du projeté dispose de boîtes de collision, il faudra également le rendre temporairement ou pour toute la durée de la projection invincible, et ce pour les mêmes raisons que j'ai citées plus haut.
Egalement important, enlever de la vie (et donner du power) au projeté. Dans Mugen, les persos ne perdent de la vie que si ils sont touchés par un coup ou si l'on dit à Mugen d'enlever de la vie à son propre perso. A moins d'avoir enlevé de l'énergie avec le HitDef de la choppe, c'est cette deuxième action qu'il faudra appliquer.

[State 846, life]
type = LifeAdd
trigger1 = Time = 0
value = -90 -> on ajoute une valeur négative de vie = on enlève de la vie

[State 846, power]
type = PowerAdd
trigger1 = Time = 0
value = 125

Enfin, il ne faut pas oublier de dire à Mugen de sortir le projeté de son state lorsque ce state est terminé. deux solutions :
- soit la projection n'est pas terminée et l'on veut que le projeté utilise encore un de nos states. On utilise alors l'action ChangeState.
- soit la projection est finie et l'on veut que le projeté retourne dans un de ses propres states standards. On utilise alors l'action SelfState.

3ème étape : finalisation


Déplacement du perso projeté


Bon, nous avons préparé les animations et les states du projeteur et du projeté. Il faut maintenant créer le mouvement du perso projeté : si on laisse les states dans cet état, les persos joueront leur anim mais le projeté restera à sa place. Pour déplacer le projeté, deux méthodes sont possibles.

1 - déplacer le projeté à partir des states du projeteur avec la commande :

[State 841, bind 1]

type = TargetBind
trigger1 = AnimElem = 1
pos = 50, -75

Le TargetBind place l'adversaire par rapport au centre du perso. Ici le centre du projeté aura pour coordonnées (50 ; -75). En mettant plusieurs TargetBind à la suite, on peut ainsi déplacer le perso projeté autour du projeteur.

2 - déplacer le projeté dans ses propre states avec un classique :

[State 845]

type = PosAdd
trigger1 = AnimElem = 1
x = 50
y = -75

Le PosAdd modifie la position du perso par rapport à son ancienne position. Ici le perso sera avancé de 50 pixels et soulevé de 75 pixels. En combinant plusieurs PosAdd, on peut déplacer le perso.

A vous de choisir la méthode qui vous paraît la plus facile à utiliser au vu de la projection que vous devez faire. Personnellement, je pense qu'il vaut mieux utiliser la première solution car je la trouve plus précise, mais tout est question de goûts et de situations.

Le CMD

Attention pour le CMD : des conditions supplémentaires doivent être réunies par rapport à celles que nous avions définies pour les coups normaux :
- les deux persos doivent être dans le même état : si le perso est en l'air ( StateType = A), son adversaire doit l'être aussi pour être projeté ([p]P2StateType = A[/b]).
- l'adversaire ne doit pas être en train de recevoir un coup ([p]P2MoveType != H[/b]) : normalement on ne doit pas pouvoir projeter un personnage qui vient d'être touché.
- enfin, les deux persos doivent être proches l'un de l'autre pour que la zone de choppe puisse toucher l'adversaire ([p]P2BodyDist x <= 10[/b]).

Au final, vous devrier avoir un State -1 ressemlant à ceci :

; Air Throw
;----------
[State -1]
type = ChangeState
value = 840
triggerall = command = \"c\" && command = \"holdfwd\"
trigger1 = StateType = A && ctrl
trigger1 = P2BodyDist x <= 10 && P2StateType = A && P2MoveType != H

Test de la projection

Une fois CMD et CNSs prêts, vous pouvez lancer votre environement de tests pour voir si votre projection est conforme à l'originale. Pour cela, commencez par projeter votre propre perso et regardez le résultat. Il y a peu de chances que ce soit parfait dès le premier essai, aussi vous devrez certainement faire quelques ajustements pour coller à la version originale.

Projetez ensuite d'autres persos pour vérifier que vous n'avez pas faits d'erreurs qui ne se verraient pas sur votre propre création. Faites les corrections appropriées. Parfois, une projection rend bien sur son perso mais pas sur les autres. Dans ce cas, le problème vient probablement des sprites standard que vous avez choisi. Faites des essais avec d'autres sprites pour voir si vous pouvez arranger les choses. Ceci dit, je doute qu'une projection rende bien avec tous les personnages créés pour Mugen. Invariablement, il y aura des persos sur lesquels elle rendra mieux que sur d'autres.

Pour résumer...

Lorsque vous créez une projection, vous devez prévoir deux types d'animations et de states :
- ceux de votre personnage (le projeteur).
- ceux de son adversaire (le projeté).

Au moment de la projection, vous devez :
- détecter si l'adversaire est entre vos mains (la choppe) en utilisant un HitDef.
- si l'adversaire est choppé, l'envoyer dans un de vos states avec le parametre P2StateNo du HitDef et changer son animation à l'aide de l'action ChangeAnim2.
- rendre invincible votre perso à l'aide de l'action NotHitBy pour éviter que sa projection ne soit interrompue.
- enlever la détection des corps à l'aide de l'action PlayerPush pour que les sprites des persos puissent se superposer si nécessaire.
- déplacer le perso projeté à l'aide de l'action TargetBind, dans le state du projeteur, ou de l'action PosAdd, dans le state du projeté.
- enlever de la vie au projeté avec LifeAdd et accessoirement lui donner du power avec PowerAdd.
- renvoyer le projeté dans son propre CNS une fois la projection achevée en utilisant l'action SelfState.
- tester le résultat sur votre perso ainsi que sur des persos tiers pour vérifier que la projection est conforme à l'originale et prendre des mesures correctives dans la négative.

Pour terminer, voici la différence entre quelques éléments semblables et que vous pourriez confondre.

Dans le HitDef de la choppe :
- P1StateNo = 841 : si la choppe touche, le projeteur va à ce state.
- P2StateNo = 845 : si la choppe touche, le projeté va à ce state dans NOTRE CNS.
- P2GetP1State = 0 : si la choppe touche, le projeté va au state défini dans le P2StateNo mais dans SON CNS.

Dans le CNS du projeté :
- ChangeAnim2 : le projeté joue une animation de NOTRE AIR.
- ChangeAnim : le projeté joue une animation de SON AIR.
- ChangeState : le projeté reste dans NOTRE CNS.
- SelfState : le projeté retourne dans SON CNS.



 
   Home
   About
   FAQ
   Disclaimer
   Staff/Thanks
   Contact



   Forum in french
   and english.

   Iris-Net



   
   Delta Park
   Sunny World
   Neoxfight Studios
   Mike Mugen
   Gods Anger
   Matmut's Creations
   Byakko
   :o domain
   Fun Factory
   Mugen Guild
   Anime Mugen
   Shin Mugen





Cute Mugen | © 2002 - 2004 | All Rights Reserved.