Forum MUGENATION: Spazzare via i proiettili. - Forum MUGENATION

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

Spazzare via i proiettili. Con un pugno.

#1 L   puffolotti 

  • Kohai
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 267
  • Iscritto: 18-February 08

Inviato 24 April 2008 - 22:12

Sivan possiede un calcio ad ascia. Mi piacerebbe, anche se non è indispensabile, fare sì che questo colpo, se incontra un proiettile mentre sivan tira giù la tallonata, lo dissolve senza danno per Sivan. (Non lo rimanda indietro, semplicemente lo dissolve.)
Il fine dell' idea è solo estetico, in realtà il modo più semplice per schivare i proiettili, per sivan sarà... stare ferma o camminare in avanti, quindi dissiparlo con un calcio ad ascia (calcio medio mentre si cammina indietro) sarebbe solo un esibizione di tempismo.
0

#2 L   Menjoso 

  • Sensei
  • Gruppo: Membro Speciale
  • Messaggi: 3995
  • Iscritto: 16-August 07

Inviato 24 April 2008 - 22:44

Dovrebbe essere abbastanza facile.

Con il comando NotHitBy, puoi rendere invincibile il tuo char a determinati attacchi. Scegli il tipo di attacco proj (non ricordo la sigla in lettere, ma se ti serve cerco meglio), e gli dici che i trigger sono validi quando il char si trova in animelem ecc...

In questo modo, quando il NotHitBy è triggerato, i projectiles che ti beccano non ti fanno nulla e si dissolvono.

PS: Mi scuso per eventuali errori, ma sono alquanto stanco...
0

#3 L   Nobun 

  • Horse Rider Skull Phantom. Rarely Here.
  • Gruppo: SuperModeratore
  • Messaggi: 4898
  • Iscritto: 11-July 04

Inviato 25 April 2008 - 12:26

Il problema è questo.

In teoria quello che dice Menjo è giustissimo

[State X, Y]
type = NotHitBy
value = , NP, SP, HP
trigger1 = ...

ma ci sono alcuni problemi:

1) Il proiettile non si distrugge, semplicemente non colpisce l'avversario.
2) Se il flag Hitdef del proiettile (il secondo valore di "attr" es, attr = N, NA) non è di tipo proiettile (NP, SP o HP) il colpo non viene riconosciuto come proiettile e l'eccezione non funziona.

Sul secondo problema non è possibile trovare una soluzione IN OGNI CASO operativa (salvo cambiare il codice "attr" di tutti i proiettili di ogni char avversario che non siano "contrassegnati" come proiettili).

Per quanto riguarda invece il primo effetto (la distruzione vera e propria del proiettile), secondo me è più corretto usare HitOverride anziché NotHitBy.

Non a caso l'HitOverride si usa anche nei codici in cui il proiettile viene rispedito al mittente.

;codice consigliato: lo stesso che ho usato in Nobunaga. NON RESPINGE i proiettili di tipo Hyper (non è verosimile che una mossa normale possa distruggere una hyper)

[State X, Y]
type = HitOverride
trigger1 = time = 0
attr = SCA ,NP, SP
stateno = ...
time = -1* animtime


comunque se si vuole bypassare il problema 2 la cosa può essere più complicata, se non si vuole (giustamente) modificare tutti i proiettili avversari non contrassegnati "proiettile" negli attributi colpo (e non sono pochi gli autori che NON fanno attenzione a tale parametro).
0

#4 L   Squall LionHeart™ 

  • Programmatore M.U.G.E.N.
  • Gruppo: Moderatore
  • Messaggi: 1097
  • Iscritto: 23-July 07

Inviato 25 April 2008 - 18:31

q8 quanto detto da Nobun... il nothitby, purtroppo, ha lo stesso effetto dell'assenza di cnsl blu... quindi il proiettile "supererebbe" il char, senza però dissolversi...

Saluti

Squall
0

#5 L   puffolotti 

  • Kohai
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 267
  • Iscritto: 18-February 08

Inviato 25 April 2008 - 23:28

Nobun, immagino il proiettile abbia un nome proprio come ce lo hanno gli avversari, ed immagino che il nome sia diverso, se così non fosse, un personaggio che cammina dopo aver tirato un proiettile ne cambierebbe la velocità.
Questo può essere una traccia per distinguere fisicamente i proiettili dagli avversari indipendentemente dalla loro definizione?
0

#6 L   Nobun 

  • Horse Rider Skull Phantom. Rarely Here.
  • Gruppo: SuperModeratore
  • Messaggi: 4898
  • Iscritto: 11-July 04

Inviato 26 April 2008 - 10:22

Purtroppo la cosa non è così semplice.
Il fatto è che, anche se fosse possibile usare altri sistemi per "distinguere" un elemento diverso dall'avversario (helper o projectile che sia), questo potrebbe essere soltanto usato nei trigger di attivazione.
Ma l'HitOverride va attivato PRIMA di ricevere il colpo e deve essere già attivo nel momento in cui lo riceve.
Inoltre gli HitOverride (se ne possono attivare fino ad 8 - da slot 0 a slot 7) si basano per l'appunto sui flag HitDef (presenti anche nella definizione colpo del Projectile, oltre ovviamente ai vari ed eventuali HitDefs contenuti in un Helper).

Il sistema Mugen si affida alla attenzione degli autori. Infatti quando si definisce un attributo colpo sarebbe indispensabile utilizzare quello corretto, proprio perché al parametro "attr" dell'HitDef possono essere associati dei comportamenti dell'Avversario (in primis un HitOverride).

Il primo valore indica il "terreno": S (stand), A (air), C (crouch)
Il secondo valore indica il tipo colpo:
Lettera 1 -> N (Normal) S (Special) H (Hyper)
Lettera 2 -> A (Attack) P (Projecile) T (Throw = presa)

Note: L'HitOverride, per avere effetto, DEVE indicare un altro state diverso. Per evitare quindi "alterazioni di animazione", consiglio un codice come questo

[StateDef 200]
...;(mettere tutti i parametri che normalmente si mettono TRANNE il parametro anim)

[State 200, 0]
type = ChangeAnim
anim = 200
trigger1 = time = 0
trigger1 = prevstateno != 201

[State 200, 1]
type = HitOverride
attr = SCA, NP, SP
stateno = 201
time = -1*animtime
trigger1 = time = 0

...

[Statedef 201]
... 

[State 201, 1]
type = HitOverride
attr = SCA, NP, SP
stateno = 200
time = -1*animtime
trigger1 = time = 0


I due states dovranno essere tra loro identici, tranne queste differenze:
1) Il comando ChangeAnim deve essere presente solo nel primo dei due states
2) Il comando HitOverride (come vedi) deve puntare all'altro dei due states (se sei nel primo state, punta al secondo; se sei nel secondo state, punta al primo).

Note:
1) il valore di time (negli HitOverride) è valido SOLO se l'animazione non è a tempo infinito. In caso contrario va ricalibrato il tutto (o contando il tempo empiricamente, o giocando sui trigger)

2) il trigger prevstateno != x va settato sulla base del numero del secondo state "copia" (necessario per l'effetto di Overriding). Nel nostro esempio il secondo state era, per l'appunto, il 201.
0

#7 L   puffolotti 

  • Kohai
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 267
  • Iscritto: 18-February 08

Inviato 01 May 2008 - 22:41

C'e' un solo disegno in cui colpisce ed è successivo alle scie di persistenza, quindi molto semplicemente metto quello che resta in un' animazione "graficamente"... mi sembra di capire di tipo: "se connette" identica a quello che resta da disegnare dell' animazione originale.

Diciamo che se colpisce qualsiasi cosa passa dallo stato 312 allo stato 1099, forse perchè ha connesso con l'avversario, forse perchè ha distrutto una palla di fuoco. Lo stato 1099 è l'animazione di ritorno dal calcio alla guardia.

In effetti più semplicemente potrei fare che quando il colpo è esploso, sia che il tallone abbia incontrato qualcosa, sia che non lo abbia fatto, va allo stato 1099 per motivi diversi, ma nello stesso modo.

Assunto come procedura, questo metodo dovrebbe essere più semplice.

In effetti, per le combinazioni destro-sinistro o dritto-rovescio permetterebbe di concatenare le combinazioni frenetiche molto semplicemente: quando uno ha tirato un ceffone, perchè non ne approfitta per tirare un rovescio?

Provo in questo modo, diciamo con il pugno medio di Sivan, cancellabile nel pugno potente basso.

Faccio un' animazione di uppercut, diciamo che la chiamo 329 (questo tipo di colpi richiede una numerazione di questo tipo: al contrario dal primo colpo della classe successiva, assumo vincolati stand, back forward, run, brake, close, il chè ne lascia 4 disponibili per ogni situazione di stand, 9 per ogni situazione crouch, in aria non hanno senso, ma ce ne sono 7)

L'animazione del pugno medio 310 la faccio terminare con l'esplosione, e poi la faccio passare al 319, che è il ritorno del pugno medio.

Al pugno 329, che parte mentre il pugno medio ritorna, non metto come trigger che richiede il controllo, ma richiede che sia in corso l'animazione 319

Ora, se definisco le animazioni di ritorno
mano sinistra-mano destra
piede sinistro-piede destro
diritto-rovescio
diretto

Dovrebbe essere piuttosto facile lasciar stabilire alle circostanze come si possa cancellare il ritorno di un colpo nell' andata di un altro.

Ogni dritto piede sinistro che può essere cancellato al ritorno si cancella in ogni rovescio piede destro o mano destra e viceversa.
ogni diretto di un lato del corpo che può essere cancellato, si cancella con un diritto o un diretto dell' altro lato del corpo

Ad esempio il pugno medio da vicino di guile sinistro diritto si cancellerebbe al momento dell' esplosione in un pugno potente da lontano, che è un rovescio destro
un calcio medio da lontano si cancellerebbe in un pugno medio da vicino.

Diciamo che per fare questo l'animazione dovrebbe avere idealmente queste fasi:
Caricamento-esplosione-ritorno obbligato in ogni caso- riequilibrio Nella fase di riequilibrio, il personaggio potrebbe approfittare della posizione dinamica per tirare un altro colpo.
0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi