Pagina 1 di 1
presa shouran kyaku
#1
Inviato 14 February 2008 - 19:11
ho iniziato a programmare la presa dello shouran kyaku...tanto x comiciare cosa devo modificare nel file .AIR?
#5
Inviato 14 February 2008 - 22:53
Non ho mai provato a programmare una presa. Cmq Nobun ha scritto un tutorial.
#7
Inviato 19 February 2008 - 21:55
Quote
...Nobun sto programmando una presa x mr.karate leggendo il tuo tutorial solo ke nn miè ben kiara la parte dell'Air cioè quali state vanno modificati e il valore 5010,10 dove va sostitutito?
Non sono sicuro del dubbio ma provo a spiegare lo schema che sta dietro ad una presa (comunque il mio tutorial è pensato per essere seguito passo-passo).
La presa è tripartita (poi da questa tripartizione si possono fare ulteriori cose).
In primo luogo c'è lo state di attacco o "tentativo di presa" che ha un HitDef che contiene una riga p1stateno e una riga p2stateno. Poi c'è (almeno) uno state dedicato alla esecuzione della presa ed (almeno) uno state dedicato a chi subisce la presa (viene letto quindi dall'avversario).
ecco cosa succede.
---(avevo fatto uno schemettino ma non lo visualizza bene)
L'HitDef contenuto nel tentativo di presa (che è un attacco quindi) praticamente gestisce tutto.
il parametro p1stateno fa in modo che il tuo char, SE COLPISCE, cambia state passando a leggere lo state di esecuzione vera e propria (es. 802)
il parametro p2stateno fa in modo che l'AVVERSARIO, se viene colpito, passa a leggere lo state indicato (es. 805) contenuto nel CNS del tuo char abbandonando quindi la lettura del suo CNS.
-----------------
Dimmi se questo passo è chiaro prima di andare avanti.
#8
Inviato 20 February 2008 - 16:01
grazie Nobun cmnq se nn ho capito male all'inizio del tuo tutorial si parla di modificare alcuni frame nell'AIR x creare la presa ke dovrebbe bloccare il p2 ma nn mi è ben kiaro questo passaggio...
cmnq ho provato a programmare la presa con l'editor di ff ma l'attacco nn va bene (i colpi nn vanno a segno) ecco cos'ho scritto
[Statedef 1800]
type = S
movetype= A
physics = S
juggle = 0
velset = 0,0
ctrl = 0
anim = 1800
[State 1800, 1]
type = HitDef
Trigger1 = Time = 0
attr = S, NT
hitflag = M
priority = 1, Miss
sparkno = -1
sprpriority = 1
p1facing = ifelse (command = "holdfwd", -1, 1)
p2facing = 1
p1stateno = 1810
p2stateno = 1820
fall = 1
[State 1800, 2]
type = ChangeState
Trigger1 = AnimTime = 0
value = 0
ctrl = 1
;----------------------------------------------------------------------
[Statedef 1810]
type = S
movetype= A
physics = N
anim = 901
poweradd = 60
[State 1810, Bind 1]
type = TargetBind
trigger1 = AnimElem = 1
pos = 50, 0
[State 1810, Bind 2]
type = TargetBind
trigger1 = AnimElem = 2
pos = 40, 5
[State 1810, Hurt]
type = TargetLifeAdd
trigger1 = AnimElem = 2
value = -78
[State 1810, Throw]
type = TargetState
trigger1 = AnimElem = 2
value = 1821
[State 1810, State End]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;----------------------------------------------------------------------
[Statedef 1820]
type = A
movetype = H
physics = N
velset = 0,0
[State 1820, 1]
type = ChangeAnim2
Trigger1 = Time = 0
value = 5010
;----------------------------------------------------------------------
[Statedef 1821]
type = A
movetype = H
physics = N
velset = 0,0
poweradd = 40
[State 1821, 1] ;Gravity
type = VelAdd
Trigger1 = 1
y = .4
[State 1821, 2] ; Recover near ground (use ChangeState)
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5200 ;HITFALL_RECOVER
[State 1821, 3] ; Recover in mid air (use SelfState)
type = SelfState
triggerall = Vel Y > 0
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5210 ;HITFALL_AIRRECOVER
[State 1821, 4] ;Hit ground
type = SelfState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 0
value = 5100 ;Hit ground
cmnq ho provato a programmare la presa con l'editor di ff ma l'attacco nn va bene (i colpi nn vanno a segno) ecco cos'ho scritto
[Statedef 1800]
type = S
movetype= A
physics = S
juggle = 0
velset = 0,0
ctrl = 0
anim = 1800
[State 1800, 1]
type = HitDef
Trigger1 = Time = 0
attr = S, NT
hitflag = M
priority = 1, Miss
sparkno = -1
sprpriority = 1
p1facing = ifelse (command = "holdfwd", -1, 1)
p2facing = 1
p1stateno = 1810
p2stateno = 1820
fall = 1
[State 1800, 2]
type = ChangeState
Trigger1 = AnimTime = 0
value = 0
ctrl = 1
;----------------------------------------------------------------------
[Statedef 1810]
type = S
movetype= A
physics = N
anim = 901
poweradd = 60
[State 1810, Bind 1]
type = TargetBind
trigger1 = AnimElem = 1
pos = 50, 0
[State 1810, Bind 2]
type = TargetBind
trigger1 = AnimElem = 2
pos = 40, 5
[State 1810, Hurt]
type = TargetLifeAdd
trigger1 = AnimElem = 2
value = -78
[State 1810, Throw]
type = TargetState
trigger1 = AnimElem = 2
value = 1821
[State 1810, State End]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;----------------------------------------------------------------------
[Statedef 1820]
type = A
movetype = H
physics = N
velset = 0,0
[State 1820, 1]
type = ChangeAnim2
Trigger1 = Time = 0
value = 5010
;----------------------------------------------------------------------
[Statedef 1821]
type = A
movetype = H
physics = N
velset = 0,0
poweradd = 40
[State 1821, 1] ;Gravity
type = VelAdd
Trigger1 = 1
y = .4
[State 1821, 2] ; Recover near ground (use ChangeState)
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5200 ;HITFALL_RECOVER
[State 1821, 3] ; Recover in mid air (use SelfState)
type = SelfState
triggerall = Vel Y > 0
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5210 ;HITFALL_AIRRECOVER
[State 1821, 4] ;Hit ground
type = SelfState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 0
value = 5100 ;Hit ground
#9
Inviato 20 February 2008 - 20:47
Il codice CNS mi sembra strutturalmente corretto (ma può anche non esserlo per niente in concreto... bisognerebbe vedere esattamente ciò che volevi fare).
Però dal codice mi pare che, di fondo, hai capito abbastanza bene lo scopo dei vari comandi (così come il fatto che TargetState obbliga l'avversario a passare ad altro state del TUO cns).
L'unica cosa che ti potrei obiettare è che questo TargetState ha poco senso, ben potendo fin da subito mettere tutto il codice sullo state 1820 (perché l'animazione non viene mutata né vedo una suddivisione degli eventi...). Ma comunque, tecnicamente, più che un errore è una imprecisione.
Allora... quando metti il ChangeAnim2 (nel tuo caso nello state 1820) l'avversario passa a leggere il TUO air... però non rinviare all'animazione 5010 (che è già prestabilita)... se ti serve che un char "segua" una caduta di default puoi anche mettere un SelfState che punta direttamente allo state desiderato della caduta.
Lo scopo invece dello state di "presa subita" è quella di determinare COME MATERIALMENTE l'avversario viene preso e come si muove.
Se ad esempio lo prendo sullo stomaco, posso ad esempio volere che l'avversario mi si pieghi in avanti, sollevandosi mentre alzo il braccio... mi segui?
Quindi programmo questo movimento di piegarsi in avanti in una mia animazione che nel nostro caso sarà l'animazione 1820
In questo momento il tuo avversario sta leggendo IL TUO state 1820 E LA TUA animazione 1820 (mentre continua, ovviamente, a leggere il proprio SFF ed il resto dei propri files).
La cosa particolare, quando fai questa animazione di presa subita, è che non puoi sapere materialmente QUALI immagini abbia usato il tuo avversario nel proprio SFF.
Solo di alcuni frames sei sicuro... quelli delle cadute che OBBLIGATORIAMENTE devono essere messi in ogni char.
Ecco quindi che l'animazione 1820 deve contenere quindi SOLO frames obbligatori (come ad esempio il 5000,0). Per un elenco dei frame obbligatori e per vedere a cosa corrispondono, basta vedere l'immagine "spr.gif" contenuta nella cartella "docs" del Mugen.
EDIT: per le prime volte ti consiglio di lasciar perdere l'editor delle prese e di provare a seguire passo-passo il mio tutorial. L'editor di FF è molto comodo, ma rischia di non farti capire nel profondo come funzionano determinati meccanismi.
Una volta che avrai imparato bene come fare la presa allora potrai ricominciare - se vorrai - ad usare l'editor per avere un codice da produrre più rapidamente (io comunque preferisco il metodo manuale).
Però dal codice mi pare che, di fondo, hai capito abbastanza bene lo scopo dei vari comandi (così come il fatto che TargetState obbliga l'avversario a passare ad altro state del TUO cns).
L'unica cosa che ti potrei obiettare è che questo TargetState ha poco senso, ben potendo fin da subito mettere tutto il codice sullo state 1820 (perché l'animazione non viene mutata né vedo una suddivisione degli eventi...). Ma comunque, tecnicamente, più che un errore è una imprecisione.
Allora... quando metti il ChangeAnim2 (nel tuo caso nello state 1820) l'avversario passa a leggere il TUO air... però non rinviare all'animazione 5010 (che è già prestabilita)... se ti serve che un char "segua" una caduta di default puoi anche mettere un SelfState che punta direttamente allo state desiderato della caduta.
Lo scopo invece dello state di "presa subita" è quella di determinare COME MATERIALMENTE l'avversario viene preso e come si muove.
Se ad esempio lo prendo sullo stomaco, posso ad esempio volere che l'avversario mi si pieghi in avanti, sollevandosi mentre alzo il braccio... mi segui?
Quindi programmo questo movimento di piegarsi in avanti in una mia animazione che nel nostro caso sarà l'animazione 1820
[State 1820, 0] type = ChangeAnim2 value = 1820 trigger1 = time = 0
In questo momento il tuo avversario sta leggendo IL TUO state 1820 E LA TUA animazione 1820 (mentre continua, ovviamente, a leggere il proprio SFF ed il resto dei propri files).
La cosa particolare, quando fai questa animazione di presa subita, è che non puoi sapere materialmente QUALI immagini abbia usato il tuo avversario nel proprio SFF.
Solo di alcuni frames sei sicuro... quelli delle cadute che OBBLIGATORIAMENTE devono essere messi in ogni char.
Ecco quindi che l'animazione 1820 deve contenere quindi SOLO frames obbligatori (come ad esempio il 5000,0). Per un elenco dei frame obbligatori e per vedere a cosa corrispondono, basta vedere l'immagine "spr.gif" contenuta nella cartella "docs" del Mugen.
EDIT: per le prime volte ti consiglio di lasciar perdere l'editor delle prese e di provare a seguire passo-passo il mio tutorial. L'editor di FF è molto comodo, ma rischia di non farti capire nel profondo come funzionano determinati meccanismi.
Una volta che avrai imparato bene come fare la presa allora potrai ricominciare - se vorrai - ad usare l'editor per avere un codice da produrre più rapidamente (io comunque preferisco il metodo manuale).
#11
Inviato 20 February 2008 - 21:19
ti devi creare una animazione corrispondente a quella che chiami nel comando ChangeAnim2
(quindi se ChangeAnim2 indirizza ad una animazione 1820 devi fare una animazione 1820).
L'unica cosa è che quando fai l'animazione in questione devi usare SOLO i frame obbligatori
ESEMPIO
[Begin Action 1820]
5000,0, 0,0, 7
5000,10, 0,0, 3
5000,20, 0,0, 3
5000,10, 0,0, 4
...
Come vedi ho usato solo frame obbligatori (Nel mio caso 5000,0 e poi 5000,10 e poi 5000,20)
(quindi se ChangeAnim2 indirizza ad una animazione 1820 devi fare una animazione 1820).
L'unica cosa è che quando fai l'animazione in questione devi usare SOLO i frame obbligatori
ESEMPIO
[Begin Action 1820]
5000,0, 0,0, 7
5000,10, 0,0, 3
5000,20, 0,0, 3
5000,10, 0,0, 4
...
Come vedi ho usato solo frame obbligatori (Nel mio caso 5000,0 e poi 5000,10 e poi 5000,20)
#12
Inviato 20 February 2008 - 21:26
Ah penso di aver capito quindi devo aggiungere questi frames nell'air e poi riprogrammare il changeanim2
ho aggiunto l'azione 1820 all'air e ho modifiato il changeanim2 in questo modo
[Statedef 1820]
type = A
movetype = H
physics = N
velset = 0,0
[State 1820, 1]
type = ChangeAnim2
Trigger1 = Time = 0
value = 1820
ma la presa nn va asegno cioè come afferra il pl2 questo cade subito a terra senza subire le ginokkiate
ho aggiunto l'azione 1820 all'air e ho modifiato il changeanim2 in questo modo
[Statedef 1820]
type = A
movetype = H
physics = N
velset = 0,0
[State 1820, 1]
type = ChangeAnim2
Trigger1 = Time = 0
value = 1820
ma la presa nn va asegno cioè come afferra il pl2 questo cade subito a terra senza subire le ginokkiate
#13
Inviato 27 February 2008 - 13:26
Scusa Nobun se ti posto mr.karate potresti risolvere il problema della presa?
#14
Inviato 02 March 2008 - 14:03
Non ne sono sicuro (bisognerebbe provare il char ma ora proprio non ho tempo).
Credo che comunque dipenda da questo
---------------
Quando il tuo char è al secondo frame, l'avversario viene posizionato da TargetBind a 40, 5 (ovvero 5 pixel sotto la linea del suolo perché ad y con valore positivo corrisponde un posizionamento sotto la linea del suolo) e il secondo state 1821 viene chiamato dopo tale spostamento (sempre ad animelem=2 ma comunque, giustamente, dopo il posizionamento del char).
Io ti consiglio comunque, come faccio nel tutorial, di "bloccare" il char mentre programmi la presa. Visto che il tutorial delle prese è stato scritto per essere un tutorial da seguire passo-passo, mi permetto di consigliarti di scaricare il personaggio AKFM di Pizzaman (in Mugenation sezione char di Mugenation) e provare a rifarti una seconda copia della presa uguale alla mia seguendo fedelmente il mio metodo e cercando di capirlo.
Secondo me, così facendo, impari abbastanza bene ad avere un buon metodo per programmare le prese.
Credo che comunque dipenda da questo
[State 1810, Bind 2] type = TargetBind trigger1 = AnimElem = 2 pos = 40, 5 .... [State 1810, Throw] type = TargetState trigger1 = AnimElem = 2 value = 1821
---------------
Quando il tuo char è al secondo frame, l'avversario viene posizionato da TargetBind a 40, 5 (ovvero 5 pixel sotto la linea del suolo perché ad y con valore positivo corrisponde un posizionamento sotto la linea del suolo) e il secondo state 1821 viene chiamato dopo tale spostamento (sempre ad animelem=2 ma comunque, giustamente, dopo il posizionamento del char).
Io ti consiglio comunque, come faccio nel tutorial, di "bloccare" il char mentre programmi la presa. Visto che il tutorial delle prese è stato scritto per essere un tutorial da seguire passo-passo, mi permetto di consigliarti di scaricare il personaggio AKFM di Pizzaman (in Mugenation sezione char di Mugenation) e provare a rifarti una seconda copia della presa uguale alla mia seguendo fedelmente il mio metodo e cercando di capirlo.
Secondo me, così facendo, impari abbastanza bene ad avere un buon metodo per programmare le prese.
Condividi questa discussione:
Pagina 1 di 1

Aiuto










