terzo appuntamento! questa è difficile da spiegare, spero esser chiaro:
allora se premo un qualsiasi tasto (a,b,c,x,y,z) viene eseguito l'attacco programmato, ad es. premo "a" e tira un pugno!
a me succede che:
- premo "a"
- l'animazione inizia e finisce regolarmente
ma se:
- premo "a"
- l'animazione inizia..
- ..premo ancora "a" prima che termini
- l'animazione si riavvia anche se quella precedente non è terminata
pensavo che con "ctrl = 0" quando do il comando (premendo "a") il personaggio fosse incontrollabile fino a quando non termina tutta l'animazione, questo non succede ma cmq il ctrl = 0 funziona in quanto se tento di camminare non risponde e termina prima lo stato in esecuzione..
Quindi credo di aver mal interpretato io la funzione ctrl = 0 (che esegue il suo compito ma non al 100% come immaginavo)
Ma allora x non fare riavviare l'anim. premendo + volte lo stesso comando ci sarà un paramentro che non conosco...
illuminatemi..
Pagina 1 di 1
problema 3 nel cns i colpi con controllo!
#2
Inviato 18 November 2007 - 15:05
Allora... non è semplice da spiegare ma cerco di essere chiaro.
Allora il parametro ctrl non sempre altera la funzionalità del Mugen. Devi invece pensarlo come una variabile che memorizza un valore (0 o 1) e che viene utilizzata in programmazione per sapere se in quel momento il personaggio può essere controllato oppure se sta eseguendo una mossa che non deve terminare (quindi non è automatico che "blocchi" tutto)
Ecco perché, normalmente, nel file CMD quando si inizia una mossa c'è sempre questo trigger
triggerX = ctrl
(che equivale a triggerX = ctrl = 1 ; il giocatore ha il controllo).
Se non si specifica questo trigger è possibile far eseguire una mossa di un personaggio anche quando "fuori controllo", il che è utile quando si devono fare delle particolari combinazioni di mossa o per i colpi che possono essere eseguiti in rapida successione.
Normalmente (anche in KFM ed anche nei miei personaggi) nei colpi deboli il Comando nel CMD è specificato in maniera simile a quella che ora ti mostro (sto andando a memoria quindi spero di non essermi dimenticato nulla)
I primi 2 trigger (triggerall) valgono in entrambe le condizioni che poi si vanno ad analizzare e dicono di controllare che sia premuto il tasto "a" e che non si stia premendo la direzione bassa (il personaggio quindi non si sta abbassando).
In questo esempio ci sono due possibili modi di attivare la mossa 230 (calcio debole)
1) Il giocatore deve avere il controllo dei tasti (trigger1 = ctrl) ed il giocatore deve trovarsi in una posa tipo standing (trigger1 = statetype = S) come ad es. la standing animation o la camminata.
2) La seconda possibilità invece, prescinde dal fatto che il giocatore abbia o meno il controllo (come vedi qui il trigger ctrl non è presente nel trigger2 e quindi, non essendo presente nel triggerall qui non vale). Il secondo caso in cui puoi attivare la mossa è quindi se tu ti trovi nello stesso state 230 (stateno = 230) e, pur non avendo il controllo, sono passati comunque più di 10 tick dalla sua attivazione (time > 10).
Il risultato è poter eseguire una seconda volta la mossa, prima del suo termine, per permettere colpi in rapida successione (il trigger time è fondamentale per non anticipare troppo l'effetto).
Questo perché le istruzioni dello statedef -1 (ovvero la parte del CMD di cui abbiamo parlato) prevalgono e vengono lette prima di quelle dello state positivo in cui ti trovi. Il risultato è tornare nello state 230 re-iniziandolo (rieseguendo quindi l'animazione dall'inizio e resettando il tempo).
Allora il parametro ctrl non sempre altera la funzionalità del Mugen. Devi invece pensarlo come una variabile che memorizza un valore (0 o 1) e che viene utilizzata in programmazione per sapere se in quel momento il personaggio può essere controllato oppure se sta eseguendo una mossa che non deve terminare (quindi non è automatico che "blocchi" tutto)
Ecco perché, normalmente, nel file CMD quando si inizia una mossa c'è sempre questo trigger
triggerX = ctrl
(che equivale a triggerX = ctrl = 1 ; il giocatore ha il controllo).
Se non si specifica questo trigger è possibile far eseguire una mossa di un personaggio anche quando "fuori controllo", il che è utile quando si devono fare delle particolari combinazioni di mossa o per i colpi che possono essere eseguiti in rapida successione.
Normalmente (anche in KFM ed anche nei miei personaggi) nei colpi deboli il Comando nel CMD è specificato in maniera simile a quella che ora ti mostro (sto andando a memoria quindi spero di non essermi dimenticato nulla)
[State -1, Calcio Debole] type = ChangeState value = 230 ctrl = 0 triggerall = command = "a" triggerall = command != "holddown" trigger1 = statetype = S trigger1 = ctrl trigger2 = stateno = 230 trigger2 = time > 10
I primi 2 trigger (triggerall) valgono in entrambe le condizioni che poi si vanno ad analizzare e dicono di controllare che sia premuto il tasto "a" e che non si stia premendo la direzione bassa (il personaggio quindi non si sta abbassando).
In questo esempio ci sono due possibili modi di attivare la mossa 230 (calcio debole)
1) Il giocatore deve avere il controllo dei tasti (trigger1 = ctrl) ed il giocatore deve trovarsi in una posa tipo standing (trigger1 = statetype = S) come ad es. la standing animation o la camminata.
2) La seconda possibilità invece, prescinde dal fatto che il giocatore abbia o meno il controllo (come vedi qui il trigger ctrl non è presente nel trigger2 e quindi, non essendo presente nel triggerall qui non vale). Il secondo caso in cui puoi attivare la mossa è quindi se tu ti trovi nello stesso state 230 (stateno = 230) e, pur non avendo il controllo, sono passati comunque più di 10 tick dalla sua attivazione (time > 10).
Il risultato è poter eseguire una seconda volta la mossa, prima del suo termine, per permettere colpi in rapida successione (il trigger time è fondamentale per non anticipare troppo l'effetto).
Questo perché le istruzioni dello statedef -1 (ovvero la parte del CMD di cui abbiamo parlato) prevalgono e vengono lette prima di quelle dello state positivo in cui ti trovi. Il risultato è tornare nello state 230 re-iniziandolo (rieseguendo quindi l'animazione dall'inizio e resettando il tempo).
#3
Inviato 18 November 2007 - 22:45
problema risolto.. dimmi di +:
l'originale era così
[State -1, standing X]
type = ChangeState
value = 200
triggerall = command = "x"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = (stateno = 200) && (time > 5)
così il comando ctrl era già presente ma il fastidio c'era, ho provato seguendo le varie spiegazioni nel tuo post a variare solo "trigger1 = ctrl" in "triggerall = ctrl" in modo che sempre rispetti questa condizione..e va OK, a questo punto potrei anche cancellare tutto il trigger2..
- a che mi serve la condizione di stare nello state 200 e con + di 5 tick.. io quando decido di eseguire questa animazione non ci sto ancora nello stato 200, ci vado non appena premo X, giusto? e anche x i tick mi è inutile che debba esserci un limite avendo messo nei triggerall il ctrl
l'originale era così
[State -1, standing X]
type = ChangeState
value = 200
triggerall = command = "x"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = (stateno = 200) && (time > 5)
così il comando ctrl era già presente ma il fastidio c'era, ho provato seguendo le varie spiegazioni nel tuo post a variare solo "trigger1 = ctrl" in "triggerall = ctrl" in modo che sempre rispetti questa condizione..e va OK, a questo punto potrei anche cancellare tutto il trigger2..
- a che mi serve la condizione di stare nello state 200 e con + di 5 tick.. io quando decido di eseguire questa animazione non ci sto ancora nello stato 200, ci vado non appena premo X, giusto? e anche x i tick mi è inutile che debba esserci un limite avendo messo nei triggerall il ctrl
#4
Inviato 19 November 2007 - 21:10
Infatti quella seconda condizione non si può verificare se non stai nello state 200. Premendo x vai allo state 200. Ma puoi voler eseguire tanti colpi in successione premendo x e può capitare che quando premi x tu stia ancora nello state 200.
Se ti trovi nello state 200 (ovvero stai eseguendo il pugno debole) e vuoi eseguirne un secondo in rapida successione senza dover attendere la fine dell'animazione 200, ecco che la seconda opzione te lo permette. Anticipa quindi la possibilità di realizzare il colpo (ma solo se stai eseguendo lo stesso tipo di colpo) permettendo la ripetizione dopo che sono passati 5 tick di tempo anziché dover attendere tutta l'animazione.
Serve per dare ancora più rapidità all'esecuzione multipla di colpi deboli dello stesso tipo.
Se metti però
triggerall = ctrl
neutralizzi il secondo trigger perché, sicuramente, quando stai eseguendo la mossa hai avuto l'accortezza di settare il ctrl a 0. Quindi non possono verificarsi in contemporanea le condizioni
trigerall = ctrl
trigger2 = stateno = 200
se invece lasci il trigger come trigger1 ripristini la funzione (perché il triggerall vale solo per la prima condizione - quella "normale" in cui si preme "x" senza essere nello state 200).
Se ti trovi nello state 200 (ovvero stai eseguendo il pugno debole) e vuoi eseguirne un secondo in rapida successione senza dover attendere la fine dell'animazione 200, ecco che la seconda opzione te lo permette. Anticipa quindi la possibilità di realizzare il colpo (ma solo se stai eseguendo lo stesso tipo di colpo) permettendo la ripetizione dopo che sono passati 5 tick di tempo anziché dover attendere tutta l'animazione.
Serve per dare ancora più rapidità all'esecuzione multipla di colpi deboli dello stesso tipo.
Se metti però
triggerall = ctrl
neutralizzi il secondo trigger perché, sicuramente, quando stai eseguendo la mossa hai avuto l'accortezza di settare il ctrl a 0. Quindi non possono verificarsi in contemporanea le condizioni
trigerall = ctrl
trigger2 = stateno = 200
se invece lasci il trigger come trigger1 ripristini la funzione (perché il triggerall vale solo per la prima condizione - quella "normale" in cui si preme "x" senza essere nello state 200).
Condividi questa discussione:
Pagina 1 di 1

Aiuto










