Informations pratiques |
Mes créations redeviennent publiques.
|
| | probleme de coup qui s'enchaine | |
| |
| | | |
Anji
Inscrit le: 11 Oct 2006 |
Messages: 101Karma: 5 plus / moins
|
Localisation: |
|
|
Quel trigger utilises-tu ?
De manière générale, un combo fonctionne de la façon suivante :
- tu appuies une première fois : le premier coup se déclenche ;
- tu appuies une deuxième fois pendant le premier coup : le second se déclenche immédiatement ;
- tu appuies une troisième fois pendant que le deuxième coup s'exécute : le troisième coup se déclenche immédiatement.
Qu'y a-t-il de différent dans ton combo ?
|
|
| |
| | | |
Cybaster
Flying over you
Créateur/Créatrice Mugen
Inscrit le: 05 Oct 2005 |
Messages: 90Karma: 6 plus / moins
|
Localisation: |
|
|
Ouais, normalement, il suffit d'un simple changestate dans le cmd, avec comme trigger un "stateno = le coup en cours".
Apres, tu peux regler les timings et tout en rajoutant des conditions comme movehit, time et trucs comme ca, mais apparemment, ce n'est pas ce que tu veux.
|
Truly, if there is evil in this world, it lies within the heart of Mankind.
|
| |
| | | |
| |
| | | |
Mike Werewolf
Loup-garou
Site Admin
Inscrit le: 07 Oct 2004 |
Messages: 1676Karma: 52 plus / moins
|
Localisation: |
|
|
Ton code semble correct. Ce qui limite au niveau du temps dont dispose l'utilisateur pour sortir le second coup, c'est ça :
Code: | trigger1 = AnimElem = 7, >= 0 |
En gros, on ne peut sortir le coup que lorsqu'on est au moins à l'élément 7 de l'anim en cours. Appuyer avant ne sert à rien.
Si tu veux pouvoir appuyer avant mais que le ChangeState ne soit pas immédiat, tu dois passer par une var pour mémoriser l'info et t'en resservir ensuite. Style :
Code: | [State 400, initialisation]
type = VarSet
trigger1 = !Time
trigger1 = var(0)
var(0) = 0
[State 400]
type = VarSet
trigger1 = !var(0)
trigger1 = command = "y"
var(0)=1 |
Avec ça, peu importe quand tu appuies sur Y : dès que tu le fais, ta var vaut 1. Ne reste plus ensuite qu'à la réutiliser au bon moment :
Code: | [State 400]
type = ChangeState
trigger1 = AnimElem = 7
trigger1 = var(0)
value = 410 |
Si tu n'as pas appuyé sur Y, ta var vaut 0, donc le ChangeState ne se déclenche pas. Si tu as appuyé sur Y, ta var vaut 1, donc le ChangeState se déclenchera.
Ca, c'est la base. Après, tu peux complexifier la chose, puisque que tu as 3 coups à enchaîner, potentiellement.
Le truc va être de comptabiliser le nombre de fois que tu appuies sur Y (sans dépasser 2, puisque au-delà, on s'en fout), en utilisant un VarAdd au lieu d'un VarSet :
Code: | [State 400, initialisation]
type = VarSet
trigger1 = !Time
trigger1 = var(0)
[State 400]
type = VarAdd
trigger1 = var(0) < 2
trigger1 = command = "y"
var(0)=1 |
Donc var(0) pourra valoir :
* 0 = tu n'as pas rappuyé sur Y
* 1 = tu as rappuyé 1 fois
* 2 = tu as rappuyé 2 fois
Si tu appuies 3, 4 ou 15 fois, ça n'a pas d'importance, ça restera bloqué sur 2.
Ensuite, pour le ChangeState, rien de changé :
Code: | [State 400]
type = ChangeState
trigger1 = AnimElem = 7
trigger1 = var(0)
value = 410 |
Ensuite, dans ton state 410, faudra que tu comptabilises encore les appuis sur Y, de la même façon :
Code: | [State 410]
type = VarAdd
trigger1 = var(0) < 2
trigger1 = command = "y"
var(0)=1 |
Mais les conséquences changent, puisqu'on a utilisé la valeur "1" pour venir en 410 :
* var(0) ne peut plus valoir 0 (sinon, on ne serait pas en state 410)
* var(1) peut valoir 1 (pour passer en state 410 et faire le second coup)
* var(2) peut valoir 2 : dans ce cas, on enchaînera avec le 3ème coup.
Mais tel que c'est fait, si tu as appuyé deux fois quand tu étais en state 400, tu n'auras rien à faire, le 3ème coup sortira tout seul (car la var vaudra déjà 2). Par contre, si tu n'as appuyé qu'une fois (la var vaut 1), faudra appuyer à nouveau pendant le state 410 pour passer la var à 2 et sortir le 3ème coup (donc en gros, tu peux appuyer pour le 3ème coup dans le state 400 ou dans le state 410).
Et donc, à la fin de ton state 410, tu as un ChangeState pour le dernier coup (state 420, par exemple) :
Code: | [State 410]
type = ChangeState
trigger1 = AnimElem = 7 ; par exemple
trigger1 = var(0) = 2
value = 420 |
Voilà ! Pour terminer, tu peux aussi vouloir un truc plus limité, par exemple, que l'appui sur la touche Y pour le 3ème coup ne soit pris en compte QUE lorsque tu es dans le state 410 (pour faire vraiment un style combo), ce qui oblige le joueur à bien synchroniser l'appui sur les touches (ne pas appuyer trop tôt ou trop tard). Dans ce cas, reprends juste ce que j'ai mis avant, et modifie juste le VarAdd du state 400 :
Code: | [State 400]
type = VarAdd
trigger1 = var(0) < 1
trigger1 = command = "y"
var(0)=1 |
Ou remplace-le par un VarSet, comme au départ :
Code: | [State 400]
type = VarSet
trigger1 = !var(0)
trigger1 = command = "y"
var(0)=1 |
Si bien que lorsque tu arrives en state 410, var(0) ne peut valoir que 1, ce qui oblige le joueur à rappuyer sur Y pour faire passer la valeur à 2 et ainsi permettre l'enchaînement avec le 3ème coup.
Tu pourras aussi trouver un exemple dans le tuto de Gouki, avec le coup Gouki Chain et la var(6).
Mike Werewolf.
|
|
| |
| | | |
Mike Werewolf
Loup-garou
Site Admin
Inscrit le: 07 Oct 2004 |
Messages: 1676Karma: 52 plus / moins
|
Localisation: |
|
|
Tu dois avoir des problèmes au niveau des ChangeStates qui se déclenchent trop tôt. Impose un "Time = x" ou un "AnimElem = x, >=0" dans tes ChangeStates avec un "x" suffisamment élevé.
Mike Werewolf.
|
|
| |
| | | |
| |
| | | |
| |
| | | |
zouh
Créateur/Créatrice Mugen
Inscrit le: 26 Aoû 2006 |
Messages: 80Karma: 2 plus / moins
|
Localisation: |
|
|
comme sa marchait pas bien en attendant je suis revenu a mon ancien code mais je vais poster l'ancien tout entier
Citation: |
;===========================================================================
;COUPS DE SABRE FORT VERS LE BAS (en appuyant 3 fois sur le bouton trois coups d'affilé)
;PREMIER COUPS
[Statedef 400]
type = C
movetype= A
physics = C
juggle = 8
velset = 0,0
ctrl = 0
anim = 400
poweradd = 20
[State 400, SOUND]
type = playsnd
trigger1 = Animelem = 2
value = S235,1
channel = 1
[State 400, trainée_1]
type = Explod
trigger1 = AnimElem = 4
anim = 401
sprpriority = 3
[State 400, trainée_2]
type = Explod
trigger1 = AnimElem = 6
anim = 402
sprpriority = 3
[State 400, trainée_3]
type = Explod
trigger1 = AnimElem = 7
anim = 403
sprpriority = 3
[State 400, Hit]
type = HitDef
trigger1 = AnimElem = 7
attr = C, NA
damage = 26,2
animtype = Heavy
hitflag = MAF
guardflag = HL
priority = 4, Hit
pausetime = 12,12
sparkno = 0
guard.sparkno = 0
sparkxy = -10,-63
hitsound = s235, 2
guardsound = 1
ground.type = Low
ground.slidetime = 14
ground.hittime = 14
ground.velocity = -6
air.velocity = -4,-3
[State 400, ChangeState]
type = ChangeState
trigger1 = AnimElem = 7, >= 0
trigger1 = Command = "y"
value = 410
[State 400, End]
type = ChangeState
trigger1 = animtime = 0
value = 405
;===========================================================================
;FIN DES DEUX PREMIER COUP DE SABRE BAS
[Statedef 405]
type = C
movetype= I
physics = C
velset = 0,0
ctrl = 0
anim = 405
[State 405, End]
type = ChangeState
trigger1 = AnimTime = 0
value = 11+(command != "holddown")
ctrl = 1
;===========================================================================
;DEUXIEME COUPS
[Statedef 410]
type = C
movetype= A
physics = C
juggle = 8
velset = 0,0
ctrl = 0
anim = 410
poweradd = 10
[State 410, SOUND]
type = playsnd
trigger1 = Time = 0
value = S220,1
channel = 1
[State 410, Hit]
type = HitDef
trigger1 = AnimElem = 2
attr = C, NA
damage = 26,2
animtype = Heavy
hitflag = MAFD
guardflag = HL
priority = 4, Hit
pausetime = 7,7
sparkno = 0
guard.sparkno = 0
sparkxy = -5,-35
hitsound = s220, 2
guardsound = 1
ground.type = Low
ground.slidetime = 14
ground.hittime = 14
ground.velocity = -6
air.velocity = -4,-3
[State 410, ChangeState]
type = ChangeState
trigger1 = AnimElem = 2, >= 0
trigger1 = Command = "y"
value = 415
[State 410, End]
type = ChangeState
trigger1 = animtime = 0
value = 405
;===========================================================================
;TROISIEME COUPS
[Statedef 415]
type = C
movetype= A
physics = C
juggle = 8
velset = 0,0
ctrl = 0
anim = 415
poweradd = 10
[State 415, SOUND]
type = playsnd
trigger1 = Time = 0
value = S230,0
channel = 1
[State 415, Hit]
type = HitDef
trigger1 = AnimElem = 2
attr = C, NA
damage = 26,2
animtype = Heavy
hitflag = MAF
guardflag = HL
priority = 4, Hit
pausetime = 7,7
sparkno = 0
guard.sparkno = 0
sparkxy = -5,-35
hitsound = s230, 2
guardsound = 1
ground.type = Low
ground.slidetime = 14
ground.hittime = 14
ground.velocity = -6
air.velocity = -4,-3
[State 415, End]
type = ChangeState
trigger1 = AnimTime = 0
value = 11+(command != "holddown")
ctrl = 1
|
Sa s'est l'action que j'avais avant pour les trois coups de sabres je l'ai remise comme sa en attendant donc dés que je la modifie à nouveau je reposterai le nouveau code
|
"Samurai ma voie"
|
| |
| | | |
Anji
Inscrit le: 11 Oct 2006 |
Messages: 101Karma: 5 plus / moins
|
Localisation: |
|
|
Cf. la réponse de Mike ci-avant : tout semble correct puisque le HitDef a pour trigger AnimElem = 7 et que ton ChangeState a pour trigger AnimElem = 7, >0.
(Petite remarque au passage : tu devrais mettre un numéro d'AnimElem supérieur à 7 pour des raisons d'animation. En effet, il est plus logique d'attendre que le coup soit porté avant d'enchaîner sur le suivant donc laisse ton personnage terminer son mouvement un minimum.)
Si ce sont les bonnes animations qui sont jouées quand tu appuyes pendant le premier et le deuxième coup de sabre, alors ne problème n'est pas dans le CMD ; pour le vérifier, affiche le debug pendant les coups de sabre et vérifie dans quel numéro de State ton personnage se trouve.
Remarque, je ne comprends toujours pas ce qui clochait avec cet ancien code puisque, comme tu le disais toi-même : "je suis obligé d'appuyer au bon moment pour que le deuxieme coup de sabre se declenche" (ce qui est plutôt normal !).
|
|
| |
| | | |
| |
| | | |
| |
| | | |
Anji
Inscrit le: 11 Oct 2006 |
Messages: 101Karma: 5 plus / moins
|
Localisation: |
|
|
Alors, à moins que tu ne souhaites passer par une commande spécifique depuis ton .cmd, c'est effectivement un système avec variable qu'il te faut (cf. explications détaillées de Mike un peu plus haut).
Maintenant, pourquoi le nouveau code que tu as mis ne fonctionne pas ? C'est là-dessus qu'il faut se pencher alors détaille ce que ton perso fait et qu'il ne devrait pas faire et poste ton nouveau code avec le système de variable implémenté pour qu'on regarde ça.
Zouh a écrit: | quand les trois coups s'enchaine il n'y a que le dernier coup qui est comptabilisé, du coup mon adversaire ne se prend qu'un coup et pas trois |
Cela veut-il dire que ton personnage change d'animation trop tôt (il ne passe pas par les sprites avec boîte de colision d'attaque) ou bien qu'il passe par ces sprites mais que l'adversaire ne subit pas les coups ?
|
|
| |
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 2
Télécharger le sujet
|
|
|
|