• Nenhum resultado encontrado

Tutorial sobre troca de animações e states (completo)

N/A
N/A
Protected

Academic year: 2021

Share "Tutorial sobre troca de animações e states (completo)"

Copied!
10
0
0

Texto

(1)

Tutorial sobre troca de

Tutorial sobre troca de

animações e states

animações e states

Escrito por SonSon3000

Escrito por SonSon3000

(Emerson Moises Reis Manfron)

(Emerson Moises Reis Manfron)

(2)

Conhecendo os SCTRLs e Triggers

Conhecendo os SCTRLs e Triggers

...

...

...

...

...

...

...

... 44

S1.SCTRL

S1.SCTRL –

– ChangeAnim

ChangeAnim ...

...

...

...

...

...

...

...

...

... 44

S2.SCTRL

S2.SCTRL –

– ChangeAnim2

ChangeAnim2 ...

...

...

...

...

...

...

...

...

... 44

S3.SC

S3.SCTRL

TRL –

– Chan

ChangeSta

geState

te ...

...

...

...

...

...

...

...

...

...

... 44

T1.TRI

T1.TRIGGER

GGER –

– Time...

Time...

...

...

...

...

...

...

...

...

...

... 55

T2.TRI

T2.TRIGGER

GGER –

– Anim..

Anim...

...

...

...

...

...

...

...

...

...

...

... 55

T3.TRIGGER

T3.TRIGGER –

– AnimTime...

AnimTime...

...

...

...

...

...

...

...

... 66

T4.TRIGGER

T4.TRIGGER –

– AnimElem

AnimElem ...

...

...

...

...

...

...

...

...

... 66

T5.

T5. TRIGGER

TRIGGER –

– AnimElemTime

AnimElemTime ...

...

...

...

...

...

...

...

...

.... 77

T6.

T6. TRIGGE

TRIGGER

R –

– AnimE

AnimElemNo...

lemNo...

...

...

...

...

...

...

...

...

... 77

T7.

T7. TRIGGER

TRIGGER –

– SelfAnimExist...

SelfAnimExist...

...

...

...

...

...

...

...

... 77

T8.

T8. TRIGGE

TRIGGER

R –

– State

StateNo...

No...

...

...

...

...

...

...

...

...

... 88

T9.

T9. TRIGGER

TRIGGER –

– PrevStateNo

PrevStateNo ...

...

...

...

...

...

...

...

...

... 88

Algumas lógicas usando os SCTRLs e Triggers

Algumas lógicas usando os SCTRLs e Triggers

...

...

...

...

...

.... 99

L1.

L1. LÓGICA

LÓGICA -

- Usando

Usando 2

2 (dois)

(dois) ou

ou mais

mais ChangeAnim:

ChangeAnim: ...

...

...

...

...

...

... 99

L2.

L2. LÓGICA

LÓGICA -

- Usando

Usando ChangeAnim

ChangeAnim privados

privados...

...

...

...

...

...

...

... 10

10

L3.

L3. LÓGICA

LÓGICA -

- Usan

Usando

do Chang

ChangeAnim2 privados

eAnim2 privados...

...

...

...

...

...

...

...

... 10

10

L4. LÓGICA

L4. LÓGICA - Executa

- Executando um

ndo um SCtrl num

SCtrl num determinado te

determinado tempo (em

mpo (em time)

time)...

...

...

...

... 11

11

L5. LÓGICA -

(3)

S1.SCTRL – ChangeAnim

S1.SCTRL – ChangeAnim

O

O SCtrl ChangeAnimSCtrl ChangeAnim é usado para trocas de animações num StateDef específico.é usado para trocas de animações num StateDef específico. Há vários exemplos de como o usar, e para quê o usar.

Há vários exemplos de como o usar, e para quê o usar. Um exemplo bem simples do ChangeAnim:

Um exemplo bem simples do ChangeAnim:

[State 0, ChangeAnim]  [State 0, ChangeAnim]  type = ChangeAnim type = ChangeAnim trigger1 = !time trigger1 = !time value = 0  value = 0  elem = 1 elem = 1

Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os

Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os ValueValue ee ElemElem.. O

O ValueValue indica a animação do Air para qual o StateDef irá.indica a animação do Air para qual o StateDef irá. O

O ElemElem indica qualindica qual AnimElemAnimElem (que será melhor visto ao decorrer do tutorial) da animação, irá começar a mesma.(que será melhor visto ao decorrer do tutorial) da animação, irá começar a mesma. ERRO:

ERRO: Quando for usar oQuando for usar o SCtrl ChangeAnimSCtrl ChangeAnim, certifique-se que a animação em que você se refere, realmente exista., certifique-se que a animação em que você se refere, realmente exista. Caso contrário o char retornará um erro no Debug do Mugen, e repetirá a ultima animação, até que o char entre numa Caso contrário o char retornará um erro no Debug do Mugen, e repetirá a ultima animação, até que o char entre numa animação que realmente exista.

animação que realmente exista.

S2.SCTRL – ChangeAnim2

S2.SCTRL – ChangeAnim2

O

O Sctrl ChangeAnim2Sctrl ChangeAnim2 age de forma parecida com o ChangeAnim, mas tem uma única diferença:age de forma parecida com o ChangeAnim, mas tem uma única diferença:

- O ChangeAnim procura pela animação do personagem, enquanto o ChangeAnim2 procura pelos sprites do oponente - O ChangeAnim procura pela animação do personagem, enquanto o ChangeAnim2 procura pelos sprites do oponente (em custom states) que fazem essa animação.

(em custom states) que fazem essa animação. Vamos supor que há uma anim com

Vamos supor que há uma anim com os grupos de sprites:os grupos de sprites: -5000,0 -5000,0 -5000,10 -5000,10 -5010,10 -5010,10

O ChangeAnim2 iria procurar esses grupos de sprites no oponente, e refazer a animação com os mesmos. O ChangeAnim2 iria procurar esses grupos de sprites no oponente, e refazer a animação com os mesmos.

OBS.: Se o oponente não tiver algum(ns) do(s) sprite(s), esse(s) sprite(s) “faltante(s)” não aparecerá(am) na execução OBS.: Se o oponente não tiver algum(ns) do(s) sprite(s), esse(s) sprite(s) “faltante(s)” não aparecerá(am) na execução da animação.

da animação. ERRO:

ERRO: Se você usar oSe você usar o Sctrl ChangeAnim2Sctrl ChangeAnim2 num custom state, sempre o ajuste para usar os sprites que qualquer outronum custom state, sempre o ajuste para usar os sprites que qualquer outro char possa ter (como por exemplo, as get hits requeridas), para a animação ser executada corretamente. Ou então, char possa ter (como por exemplo, as get hits requeridas), para a animação ser executada corretamente. Ou então, limite no cns, para apenas alguns chars que você tenha certeza que terão os sprites requeridos pela sua animação. limite no cns, para apenas alguns chars que você tenha certeza que terão os sprites requeridos pela sua animação.

S3.SCTRL – ChangeState

S3.SCTRL – ChangeState

Assim como o

Assim como o ChangeAnimChangeAnim foi feito para trocar de animação, ofoi feito para trocar de animação, o ChangeStateChangeState foi feito para trocar de StateDef.foi feito para trocar de StateDef. Um exemplo bem simples do ChangeState:

Um exemplo bem simples do ChangeState:

[State 0, ChangeState]  [State 0, ChangeState]  type = ChangeState type = ChangeState trigger1 = !time trigger1 = !time value = 200  value = 200  ctrl = 1 ctrl = 1

Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os

Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os ValueValue ee CtrlCtrl.. O

O ValueValue indica a qual StateDef do CNS, o char irá.indica a qual StateDef do CNS, o char irá. O

O CtrlCtrl indica que quando o char for para tal StateDef, se ele vai ser controle sobre si mesmo ou não (muito útil para casoindica que quando o char for para tal StateDef, se ele vai ser controle sobre si mesmo ou não (muito útil para caso você queira fazer um StateDef, sem que outros StateDefs atrapalhem a execução do mesmo).

você queira fazer um StateDef, sem que outros StateDefs atrapalhem a execução do mesmo). ERRO:

ERRO: Ao usar oAo usar o SCtrl ChangeStateSCtrl ChangeState, tenha certeza de indicar a ele, um StateDef que realmente exista. Caso contrário, tenha certeza de indicar a ele, um StateDef que realmente exista. Caso contrário será retornado um erro no Debug, e o char continuará no StateDef anterior.

(4)

T1.TRIGGER – Time

T1.TRIGGER – Time

Esse trigger foi usado nos exemplos de

Esse trigger foi usado nos exemplos de SCRTLs: ChangeAnimSCRTLs: ChangeAnim ee ChangeStateChangeState.. E o mesmo, tem a utilidade de fazer qualquer 

E o mesmo, tem a utilidade de fazer qualquer SCtrlSCtrl ser executado dependendo do tick* exato de um StateDef (definidoser executado dependendo do tick* exato de um StateDef (definido pelo char maker**).

pelo char maker**).

*Quadros por segundo (por padrão o mugen tem 60 ticks num segundo). *Quadros por segundo (por padrão o mugen tem 60 ticks num segundo). **

**A pessoa que programa chars para o mugen.A pessoa que programa chars para o mugen. Vamos usar um exemplo, no qual o

Vamos usar um exemplo, no qual o SCtrl NullSCtrl Null seria executado no 6º tick do StateDef:seria executado no 6º tick do StateDef: [State 200, Null] [State 200, Null] type = Null type = Null trigger1 = time = trigger1 = time = 55

Como você pode ver, quando quisermos fazer um SCtrl ser chamado no 6º tick, botamos time = 5. Como você pode ver, quando quisermos fazer um SCtrl ser chamado no 6º tick, botamos time = 5.

“Por que?”  “Por que?” 

Porque o esquema de time do mugen é assim: Porque o esquema de time do mugen é assim: time = tempo em tick -1

time = tempo em tick -1 Veja a

Veja a Figura T1.1Figura T1.1::

Figura T1.1 Figura T1.1

Tabela de tempo comparativo de ticks. Tabela de tempo comparativo de ticks.

Onde N seria um numero qualquer. Onde N seria um numero qualquer. Lembrando que pode-se usar os sinais

Lembrando que pode-se usar os sinais > (maior que)> (maior que),, < (menor que)< (menor que),, >=>= (maior ou igual)(maior ou igual),, <= (menor ou igual),<= (menor ou igual), ee !=

!= (diferente de)(diferente de)..

Obs: Se você quiser que algo seja executado no primeiro tick, seria

Obs: Se você quiser que algo seja executado no primeiro tick, seria time = 0time = 0, ou simplesmente,, ou simplesmente, !time!time.. Quando você usa o

Quando você usa o !time!time, indica que o time não existe, sendo assim ele é falso, e sendo falso, ele é igual a zero., indica que o time não existe, sendo assim ele é falso, e sendo falso, ele é igual a zero. (para saber mais, informe-se sobre valores

(para saber mais, informe-se sobre valores Booleanos)Booleanos)

T2.TRIGGER – Anim

T2.TRIGGER – Anim

Esse trigger, tem a utilidade de fazer um

Esse trigger, tem a utilidade de fazer um SCtrlSCtrl ser executado, se aser executado, se a AnimAnim que o char maker indicou, seja verdadeira.que o char maker indicou, seja verdadeira. Exemplo: Exemplo: [State 200, ChangeAnim]  [State 200, ChangeAnim]  type = ChangeAnim type = ChangeAnim trigger1 = Anim = 230  trigger1 = Anim = 230  value = 210  value = 210  elem = 1 elem = 1

Esse exemplo diz, que se a Animação do char for 230, o StateDef irá para a Anim 210. Esse exemplo diz, que se a Animação do char for 230, o StateDef irá para a Anim 210.

(5)

type = ChangeAnim type = ChangeAnim trigger1

trigger1 = = !AnimTime !AnimTime ; ; Ou Ou AnimTime AnimTime = = 0 0  value = 210 

value = 210  elem = 1 elem = 1

Aqui diz, que se a animação do StateDef estiver acabado, vai para a Anim 210. Aqui diz, que se a animação do StateDef estiver acabado, vai para a Anim 210. Se

Se AnimTimeAnimTime, for maior que zero, como por exemplo, for maior que zero, como por exemplo AnimTime = 5AnimTime = 5, ele fará o, ele fará o SctrlSctrl ser executado 5 ticks depois deser executado 5 ticks depois de acabada a animação.

acabada a animação. Se

Se AnimTimeAnimTime, for menor que zero, como por exemplo, for menor que zero, como por exemplo AnimTime = -5AnimTime = -5, ele fará o, ele fará o SctrlSctrl ser executado ser executado 5 ticks 5 ticks antes deantes de acabar a animação.

acabar a animação. Ou seja, se

Ou seja, se AnimTimeAnimTime for for AnimTime = 10AnimTime = 10,, seria basicamente igual a isso:seria basicamente igual a isso:

time

time = (tempo total da anim) + 10 = (tempo total da anim) + 10 

Lembrando que aqui também pode-se usar os sinais

Lembrando que aqui também pode-se usar os sinais >>,, <<,, >=>=,, <=<= ee !=!=..

T4.TRIGGER – AnimElem

T4.TRIGGER – AnimElem

Esse trigger, é um dos mais usados quando se fala sobre “Quadros de Animação e o Tempo dos mesmos”. Esse trigger, é um dos mais usados quando se fala sobre “Quadros de Animação e o Tempo dos mesmos”. Caso você não tenha entendido, o

Caso você não tenha entendido, o AnimElemAnimElem serve para fazer umserve para fazer um SCtrlSCtrl ser executado, se o Quadro de Animação for oser executado, se o Quadro de Animação for o que o char maker queira.

que o char maker queira. Veja a

Veja a Figura T4.1Figura T4.1

Figura T4.1 Figura T4.1 Quadro de AnimElem, onde o primeiro s

Quadro de AnimElem, onde o primeiro sprite da animação é sempre o prite da animação é sempre o AnimElem 1.AnimElem 1. Exemplo: Exemplo: [State 200, ChangeState]  [State 200, ChangeState]  type = ChangeState type = ChangeState trigger1 = AnimElem = 3 trigger1 = AnimElem = 3 value = 235  value = 235  ctrl = 1 ctrl = 1

Esse trecho de código, diz que quando a Animação estiver no seu 3º quadro de animação, o char irá para o Esse trecho de código, diz que quando a Animação estiver no seu 3º quadro de animação, o char irá para o StateDef 235.

StateDef 235. O

O AnimElemAnimElem tem a opção além de fazer com que algo seja executado num exato quadro, também seja num exato ticktem a opção além de fazer com que algo seja executado num exato quadro, também seja num exato tick de um quadro de animação. de um quadro de animação. Exemplo: Exemplo: [State 210, ChangeState]  [State 210, ChangeState]  type = ChangeState type = ChangeState trigger1 = AnimElem = 5,= 2  trigger1 = AnimElem = 5,= 2  value = 215  value = 215  ctrl = 1 ctrl = 1 Veja o

Veja o AnimElem = 5AnimElem = 5, logo mais para a esquerda tem uma, logo mais para a esquerda tem uma , (vírgula), (vírgula) ee = 2= 2..

Isso significa que o char irá para o StateDef 215, quando estiver no 3º tick do 5º quadro da anim. Isso significa que o char irá para o StateDef 215, quando estiver no 3º tick do 5º quadro da anim.

(6)

Basicamente o AnimElem é feito disso: Basicamente o AnimElem é feito disso:

AnimElem = (Quadro da Animação), = (time) AnimElem = (Quadro da Animação), = (time)

OBS.: Quando

OBS.: Quando timetime não existir, ele será igual a 0 (primeiro tick).não existir, ele será igual a 0 (primeiro tick). Lembrando que no

Lembrando que no timetime dodo AnimElemAnimElem pode-se usar os sinaispode-se usar os sinais >>,, <<,, >=>=,, <=<= ee !=!=..

T5. TRIGGER – AnimElemTime

T5. TRIGGER – AnimElemTime

O trigger 

O trigger AnimElemTimeAnimElemTime, é muito semelhante ao, é muito semelhante ao AnimElemAnimElem (devido ao fato de ser uma variação do mesmo)(devido ao fato de ser uma variação do mesmo),, nono quesito funcionalidade.

quesito funcionalidade. Se no

Se no AnimElemAnimElem é assim:é assim:

AnimElem = 3, =2  AnimElem = 3, =2 

No

No AnimElemTimeAnimElemTime seria assim:seria assim:

AnimElemTime(3) = 2  AnimElemTime(3) = 2 

Ou seja: Ou seja:

AnimElemTime(Quadro da Animação) = (time) AnimElemTime(Quadro da Animação) = (time)

Não temos muito o que aprender sobre esse trigger, porque ele é muito semelhante ao

Não temos muito o que aprender sobre esse trigger, porque ele é muito semelhante aoAnimElemAnimElem comum.comum.

T6. TRIGGER – AnimElemNo

T6. TRIGGER – AnimElemNo

Esse trigger é uma outra variação do AnimElem, mas seu funcionamento é um tanto diferente, dos dois triggers acima. Esse trigger é uma outra variação do AnimElem, mas seu funcionamento é um tanto diferente, dos dois triggers acima. Exemplo: Exemplo: [State 200, VarAdd]  [State 200, VarAdd]  type = VarAdd  type = VarAdd  trigger1 = AnimElemNo(0) = 1 trigger1 = AnimElemNo(0) = 1 var(10) = 5  var(10) = 5  Esse exemplo,

Esse exemplo, VarAddVarAdd irá incrementar a var(10) de 5 em 5, a cada tick doirá incrementar a var(10) de 5 em 5, a cada tick do AnimElem 1AnimElem 1.. Onde isso: Onde isso: AnimElemNo(0) = 1 AnimElemNo(0) = 1 Seria equivalente à: Seria equivalente à:

AnimElem = 1, >= 0 && AnimElem = 2, < 0  AnimElem = 1, >= 0 && AnimElem = 2, < 0 

Ou então à: Ou então à:

AnimElemTime(1) >= 0 && AnimElemTime(2) < 0  AnimElemTime(1) >= 0 && AnimElemTime(2) < 0 

Simplificando, o número entre parênteses é o tick do elem e depois do sinal de igual, o elem em si. Simplificando, o número entre parênteses é o tick do elem e depois do sinal de igual, o elem em si.

AnimElemNo( 

AnimElemNo( timetime) =) = elemelem

O AnimElemNo, faz um

O AnimElemNo, faz um SCtrlSCtrl ser executado a partir doser executado a partir do timetime dodo elemelem, até o ultimo, até o ultimo timetime do mesmodo mesmo elemelem..

T7. TRIGGER – SelfAnimExist

T7. TRIGGER – SelfAnimExist

Esse trigger informa o mugen, se

Esse trigger informa o mugen, se uma anim realmente existe no char.uma anim realmente existe no char. Código: Código: [State 0, ChangeAnim]  [State 0, ChangeAnim]  type = ChangeAnim type = ChangeAnim triggerall = SelfAnimExist(5325) triggerall = SelfAnimExist(5325) trigger1 = !time trigger1 = !time value = 5325  value = 5325 

Esse código é simples, ele apenas checa no char se a

Esse código é simples, ele apenas checa no char se aanimação 5325 animação 5325 existe, se ela existir, o SCtrl ChangeAnimexiste, se ela existir, oSCtrl ChangeAnim seráserá

executado e mudará a animação do char para a

(7)

Um exemplo do uso dele, no StateDef -2 (mas que pode ser usado nos -1 e -3 também): Um exemplo do uso dele, no StateDef -2 (mas que pode ser usado nos -1 e -3 também): [state -2, VarSet] [state -2, VarSet] type = VarSet type = VarSet trigger1 = StateNo = 1200 trigger1 = StateNo = 1200 var(10) = 5 var(10) = 5

Aqui nesse exemplo, se o char estiver no StateDef 1200, a var(10) será igual a 5. Aqui nesse exemplo, se o char estiver no StateDef 1200, a var(10) será igual a 5. Lembrando que pode-se usar os sinais

Lembrando que pode-se usar os sinais >, < , >=>, < , >= , <=, <= ee !=!=.. ERRO:

ERRO: Se você por algum descuido, deixar algum trigger com oSe você por algum descuido, deixar algum trigger com o StateNoStateNo igual a um StateDef não existente, oigual a um StateDef não existente, o SCtrlSCtrl nãonão executará, pelo motivo que esse StateDef não será executado, se ele não existir.

executará, pelo motivo que esse StateDef não será executado, se ele não existir.

T9. TRIGGER – PrevStateNo

T9. TRIGGER – PrevStateNo

O

O PrevStateNoPrevStateNo, é similar ao trigger , é similar ao trigger StateNoStateNo, mas retorna o StateDef anterior ao o que está sendo executado., mas retorna o StateDef anterior ao o que está sendo executado. Exemplo: Exemplo: [state 210, VarSet] [state 210, VarSet] type = VarSet type = VarSet trigger1 = PrevStateNo = 200 trigger1 = PrevStateNo = 200 var(10) = 2 var(10) = 2 Neste exemplo, o

Neste exemplo, o SCtrlSCtrl está no StateDef 210, e diz que a var(10) será igual a 2, se o StateDef anterior ao o que estáestá no StateDef 210, e diz que a var(10) será igual a 2, se o StateDef anterior ao o que está sendo executado, tiver sido o StateDef 200.

sendo executado, tiver sido o StateDef 200. Lembrando que pode-se usar os sinais

Lembrando que pode-se usar os sinais >, < , >=>, < , >= , <=, <= ee !=!=.. ERRO:

ERRO: Assim como no trigger Assim como no trigger StateNoStateNo, ao ser conferido um, ao ser conferido um PrevStateNoPrevStateNo onde um StateDef não exista, oonde um StateDef não exista, o SCtrlSCtrl nãonão será executado, pelo motivo em que esse StateDef nunca será o anterior, porque o mesmo não existe.

(8)

Algumas lógicas usando os SCTRLs e Triggers

Algumas lógicas usando os SCTRLs e Triggers

L1. LÓGICA - Usando 2 (dois) ou mais ChangeAnim

L1. LÓGICA - Usando 2 (dois) ou mais ChangeAnim

::

Vamos supor que o char tenha que executar duas animações dependendo do que o jogador estiver fazendo com ele. Vamos supor que o char tenha que executar duas animações dependendo do que o jogador estiver fazendo com ele. Que nem num power change, onde o char carrega suas barras de level. Então, quando o jogador estiver executando o Que nem num power change, onde o char carrega suas barras de level. Então, quando o jogador estiver executando o comando, o char executará uma animação e quando soltar o botão, executará outra animação.

comando, o char executará uma animação e quando soltar o botão, executará outra animação. Geralmente makers fazem isso usando dois StateDefs, enquanto poderia usar apenas um, com dois

Geralmente makers fazem isso usando dois StateDefs, enquanto poderia usar apenas um, com doisChangeAnimChangeAnim.. Código:

Código:

[State 700, Animação do char executando o Power Charge]  [State 700, Animação do char executando o Power Charge]  type

type = = ChangeAnimChangeAnim

trigger1 = command = “hold_c”  trigger1 = command = “hold_c”  value = 700 

value = 700 

[State 700, Animação do char parando de executar o Power Charge]  [State 700, Animação do char parando de executar o Power Charge]  type

type = = ChangeAnimChangeAnim triggerall = Anim = 700  triggerall = Anim = 700 

trigger1 = command != “hold_c”  trigger1 = command != “hold_c”  value = 705 

value = 705 

Neste código não colocamos o

Neste código não colocamos o elemelem embaixo deembaixo de valuevalue, por que caso o, por que caso o elemelem não seja atribuído, ele será igual a 1.não seja atribuído, ele será igual a 1. Agora à explicação do código em si:

Agora à explicação do código em si: - Quando o comando

- Quando o comandohold_c hold_c estiver sendo pressionado, a animação do personagem seráestiver sendo pressionado, a animação do personagem será700 700 ;;

- Quando o comando

- Quando o comandohold_c hold_c não estiver sendo pressionado (que nesse caso, está sendo solto), a animação donão estiver sendo pressionado (que nesse caso, está sendo solto), a animação do

personagem será personagem será705 705 ..

Mas preste atenção na linha em

Mas preste atenção na linha em negritonegrito do código.do código. Aquele

Aqueletriggerall triggerall com a animação anterior àcom a animação anterior à705 705 , é obrigatório quando uma animação está vindo após a outra, num, é obrigatório quando uma animação está vindo após a outra, num

mesmo StateDef. Caso contrário, o char travará, e nunca sairá da animação. mesmo StateDef. Caso contrário, o char travará, e nunca sairá da animação. Logo após ter feito os dois

Logo após ter feito os dois ChangeAnimChangeAnim, faremos o, faremos o ChangeStateChangeState retornando ao StateDef “base” do personagem (suaretornando ao StateDef “base” do personagem (sua pose de luta, sem estar fazendo nenhuma ação):

pose de luta, sem estar fazendo nenhuma ação):

[State 700, Voltando ao State Base]  [State 700, Voltando ao State Base]  type = ChangeState type = ChangeState trigger1 = Anim = 705  trigger1 = Anim = 705  trigger1 = !AnimTime trigger1 = !AnimTime value = 0  value = 0 

Preste bem atenção nas linhas em

Preste bem atenção nas linhas em negritonegrito. Se você prestou bem a atenção no código, verá que o. Se você prestou bem a atenção no código, verá que o ChangeStateChangeState só serásó será executado, logo após a

executado, logo após aanimação 705 animação 705 ter acabado.ter acabado.

Ficando os três

Ficando os três SCtrlSCtrl juntos, seria assim:juntos, seria assim:

[State 700, Animação do char executando o Power Charge]  [State 700, Animação do char executando o Power Charge]  type

type = = ChangeAnimChangeAnim

trigger1 = command = “hold_c”  trigger1 = command = “hold_c”  value = 700 

value = 700 

[State 700, Animação do char parando de executar o Power Charge]  [State 700, Animação do char parando de executar o Power Charge]  type

type = = ChangeAnimChangeAnim triggerall = Anim = 700  triggerall = Anim = 700 

trigger1 = command != “hold_c”  trigger1 = command != “hold_c”  value = 705 

value = 705 

[State 700, Voltando ao State Base]  [State 700, Voltando ao State Base]  type = ChangeState type = ChangeState trigger1 = Anim = 705  trigger1 = Anim = 705  trigger1 = !AnimTime trigger1 = !AnimTime value = 0  value = 0 

(9)

L2. LÓGICA - Usando

L2. LÓGICA - Usando ChangeAnim privados

ChangeAnim privados

ChangeAnim privados geralmente são usados em intros/vitórias especiais, ou em “

ChangeAnim privados geralmente são usados em intros/vitórias especiais, ou em “custom animscustom anims” (que diferente do” (que diferente do

ChangeAnim2

ChangeAnim2, o custom state chamaria a animação do oponente, e não os sprites do mesmo)., o custom state chamaria a animação do oponente, e não os sprites do mesmo). E para não causar bugs em

E para não causar bugs emcustom animscustom anims:: [State 6100, Custom Anim] 

[State 6100, Custom Anim]  type = ChangeAnim type = ChangeAnim triggerall = SelfAnimExist(6100) triggerall = SelfAnimExist(6100) trigger1 = !time trigger1 = !time value = 6100  value = 6100 

[State 6100, Normal Anim]  [State 6100, Normal Anim]  type = ChangeAnim type = ChangeAnim triggerall = !SelfAnimExist(6100) triggerall = !SelfAnimExist(6100) trigger1 = !time trigger1 = !time value = 5000  value = 5000 

Neste código, o oponente iria para a

Neste código, o oponente iria para aanimação 6100 animação 6100 , caso a mesma existir no *.air do oponente., caso a mesma existir no *.air do oponente.

Caso contrário, iria para a

Caso contrário, iria para aanimação 5000 animação 5000 ..

L3. LÓGICA - Usando

L3. LÓGICA - Usando ChangeAnim2 privados

ChangeAnim2 privados

Geralmente, quando vamos usar 

Geralmente, quando vamos usar custom states,custom states,usamos ousamos o ChangeAnim2ChangeAnim2 pra fazer uma animaçãopra fazer uma animação

customizada/personalizada. customizada/personalizada.

Mas infelizmente muitos chars não terão os sprites (dependendo do tipo de custom state) que necessita a anim do Mas infelizmente muitos chars não terão os sprites (dependendo do tipo de custom state) que necessita a anim do ChangeAnim2

ChangeAnim2..

Então para também não causar bugs, podemos “privar” o

Então para também não causar bugs, podemos “privar” o ChangeAnim2ChangeAnim2 para chars que temos certeza que tem os taispara chars que temos certeza que tem os tais

sprites requeridos sprites requeridos..

Exemplo: Exemplo:

[State 6200, Custom Anim – Para os chars Ryu,Ken,Sub-Zero e Scorpion]  [State 6200, Custom Anim – Para os chars Ryu,Ken,Sub-Zero e Scorpion]  type = ChangeAnim2 

type = ChangeAnim2  triggerall = !time triggerall = !time

trigger1 = P1Name = “Ryu”  trigger1 = P1Name = “Ryu”  trigger2 = P1Name = “Ken”  trigger2 = P1Name = “Ken”  trigger3 = P1Name = “Sub-Zero”  trigger3 = P1Name = “Sub-Zero”  trigger4 = P1Name = “Scorpion”  trigger4 = P1Name = “Scorpion”  value = 6200 

value = 6200 

Esse exemplo executa o

Esse exemplo executa o ChangeAnim2ChangeAnim2 no momento exato de inicialização do StateDef, e quando o oponente seno momento exato de inicialização do StateDef, e quando o oponente se chamar Ryu, Ken, Sub-Zero ou Scorpion.

chamar Ryu, Ken, Sub-Zero ou Scorpion. Obs.:

Obs.: Você poderá adicionar triggers com números diferentes, iguais aVocê poderá adicionar triggers com números diferentes, iguais aenemynear,name = “nome do oponente”.enemynear,name = “nome do oponente”. PS.:

PS.: Nos triggers você pode notar que está sendo usado o termoNos triggers você pode notar que está sendo usado o termoP1NameP1Name. A resposta disso é simples, esse. A resposta disso é simples, esse

ChangeAnim2

ChangeAnim2 está dentro de umestá dentro de umcustom statecustom state, logo o oponente executará esse custom, logo o oponente executará esse customstatestatecomo se fosse umcomo se fosse um StateDef 

StateDef dele.dele.

E para o char se “auto-reconhecer” é usado o

(10)

Mas privando o

Mas privando o ChangeAnim2ChangeAnim2 dessa forma, quando o oponente não se chamar Ryu, Ken, Sub-Zero ou Scorpion, eledessa forma, quando o oponente não se chamar Ryu, Ken, Sub-Zero ou Scorpion, ele ficará sem animação, travado no custom state.

ficará sem animação, travado no custom state. Então teremos que criar uma animação no

Então teremos que criar uma animação no ChangeAnimChangeAnim para os personagens que não são os que opara os personagens que não são os que o ChangeAnim2ChangeAnim2 procura:

procura:

[State 6200, Custom Anim – Para outros chars]  [State 6200, Custom Anim – Para outros chars]  type = ChangeAnim

type = ChangeAnim triggerall = !time triggerall = !time

trigger1 = P1Name != “Ryu”  trigger1 = P1Name != “Ryu”  trigger1 = P1Name != “Ken”  trigger1 = P1Name != “Ken”  trigger1 = P1Name != “Sub-Zero”  trigger1 = P1Name != “Sub-Zero”  trigger1 = P1Name != “Scorpion”  trigger1 = P1Name != “Scorpion”  value = 5000 

value = 5000 

Nesse exemplo, se os chars se chamarem Ryu, Ken, Sub-Zero ou Scorpion, será executado o Nesse exemplo, se os chars se chamarem Ryu, Ken, Sub-Zero ou Scorpion, será executado o ChangeAnim2

ChangeAnim2 com a animação 6200, caso contrário será executado ocom a animação 6200, caso contrário será executado o ChangeAnimChangeAnim com a animação 5000.com a animação 5000.

L4. LÓGICA - Executando um SCtrl num determinado tempo (em time)

L4. LÓGICA - Executando um SCtrl num determinado tempo (em time)

Para fazer acontecer isso, usaremos

Para fazer acontecer isso, usaremos timetime maior quemaior quevalor mínimovalor mínimoee timetime menor quemenor quevalor máximovalor máximo..

Então, seguiremos o exemplo: Então, seguiremos o exemplo:

[State 200, Soco do char]  [State 200, Soco do char]  type = ChangeAnim2  type = ChangeAnim2  triggerall = Anim != 200  triggerall = Anim != 200 

trigger1 = time >= 0 && time <= 10  trigger1 = time >= 0 && time <= 10  value = 200 

value = 200 

Esse simples exemplo diz que quando o

Esse simples exemplo diz que quando o timetime for maior ou igual a 0 (primeiro tick em diante) e menor ou igual a 10for maior ou igual a 0 (primeiro tick em diante) e menor ou igual a 10 (décimo primeiro tick pra menos), fazendo que o

(décimo primeiro tick pra menos), fazendo que o SCtrlSCtrl seja executado apenas nos primeiros 11 ticks do StateDef.seja executado apenas nos primeiros 11 ticks do StateDef. Já o triggerall ta dizendo que a

Já o triggerall ta dizendo que aanimação 200 animação 200 só será executada, quando a mesma não estiver sido executada antes.só será executada, quando a mesma não estiver sido executada antes.

L5. LÓGICA - Executando um SCtrl num determinado tempo (em AnimElem/AnimElemTime)

L5. LÓGICA - Executando um SCtrl num determinado tempo (em AnimElem/AnimElemTime)

Isso é útil para se fazer algo acontecer entre um

Isso é útil para se fazer algo acontecer entre um AnimElemAnimElem e outro, ou entre um tick doe outro, ou entre um tick do AnimElemAnimElem e outro.e outro.

[State 200, Soco do char]  [State 200, Soco do char]  type = ChangeAnim2  type = ChangeAnim2  triggerall = Anim != 200  triggerall = Anim != 200  trigger1 = AnimElem = 3, >= 0  trigger1 = AnimElem = 3, >= 0  trigger1 = AnimElem = 6, <= 4 trigger1 = AnimElem = 6, <= 4 value = 200  value = 200 

Isso faria que a Animação estivesse sendo executada entre o

Isso faria que a Animação estivesse sendo executada entre o AnimElem 3AnimElem 3 no primeiro tick, e entre o 5 tick dono primeiro tick, e entre o 5 tick do AnimElem 6

AnimElem 6.. Isso em

Isso em AnimElemTimeAnimElemTime seria assim:seria assim:

[State 200, Soco do char]  [State 200, Soco do char]  type = ChangeAnim2  type = ChangeAnim2  triggerall = Anim != 200  triggerall = Anim != 200  trigger1 = AnimElemTime(3) >= 0  trigger1 = AnimElemTime(3) >= 0  trigger1 = AnimElemTime(6) <= 4 trigger1 = AnimElemTime(6) <= 4 value = 200  value = 200 

Referências

Documentos relacionados

Anterior a LVQ está o conceito de Quantização Vetorial (denotada pela sigla em inglês, VQ) [14], [13]. A principal idéia de VQ é formar uma aproximação quantizada dos dados,

(...) a carência da cor local (tanto brasileira quanto estrangeira, pois o vago da ambiência torna-se cada vez mais incômodo à medida que caminha a narrativa) é um fato

O conjunto dos estudos desenvolvidos sob a ótica histórico-cultural aponta como condição essencial para essa máxima apropriação das qualidades humanas pelas crianças

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null ) create table Address ( addressId bigint not null primary key

Esse é um saber empírico sobre si mesma, e essa questão foi a principal e mais relevante para as mulheres, no retorno à vida sexual, após o parto: sentir-se pronta e sentir que

Os dados de monitoramento do ar do Distrito Federal somente estão disponíveis em relatórios mensais, para apenas 5 dias (poluentes: PTS, fumaça e duas estações iniciaram

• A música popular tradicional no Brasil: a permanência das tradições musicais nas comunidades (funções e sentidos); características dos fatos e da música de tradição oral

Obrigado e parabéns por adquirir a ZUMBA MOSQUITO TRAP - CMT20 - - para armadilha colcapsável para captura de mosquitos da ISCA Tecnologias.. Este produto é resultado de anos