Olá pessoal. esse tutorial serve mais para o pessoal que é fan de naruto.
sei que o pessoal gostaria de saber como se faz para criar clones
e tal, já que no anime naruto isso é muito comum.
bom, nesse tutorial, irei explicar como criar o jutsu Kage Bushin.
antes de mais nada, não irei só colocar a codificação. gostaria que você
aprendesse como fazer. vamos esquecer a função [Ctrl + C depois Ctrl + V].
# antes de começar o tutorial própriamente dito, irei explicar como criar helpers.
temos um state básico criado aqui. agora vamos indicar uma ação para esse state.
observe onde está [???] esse será o numero do state, dado por mim como exemplo.
é como se fosse um movimento comum já criado, soco ou chute.
[Passo 1]
[Statedef ???]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = ???
ctrl = 0
sprpriority = 2
poweradd = -20
[State ???, ?]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
# agora, vamos determinar um valor para esse state.
vou usar o valor 200 como exemplo e também a animação
usarei o valor 200.
[Passo 2]
[Statedef 200]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 200
ctrl = 0
sprpriority = 2
poweradd = -20
[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
# agora, vamos dizer que essa ação 200 tenha 4 frames de sprites.
e você quer que o helper, no caso, o clone, apareça no 3° frame da animação 200.
ficará assim.
[Passo 3]
[Statedef 200]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 200 <-- indica a animação 200
ctrl = 0
sprpriority = 2
poweradd = -20
# o helper entrará nessa parte. para criar um helper é muito simples, observe no FF
no painel, do lado direito, ele já te da estados, basta você indicar valores.
[State 200, 1]
type = helper
trigger1 = AnimElem = 3 <-- o helper irá aparecer no 3° frame da animação 200.
name = "clone" <-- nome do helper, mostrado no debug do mugen.
id = 201 <-- Id de remoção do helper.
pos = 0,0 <-- posição do helper na tela.
postype = p1 <-- indica que vai sair do player 1
stateno = 201 <-- estado do helper.
helpertype = normal <-- normal e diferente de player, se você usar player, o helper será como um jogador.
ownpal = 0
[State 200, 2]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
# ok, criamos a chamada do helper, agora iremos cria os states do helper
própriamente dito. observe, que iremos criar o state 201.
esse state será chamado pelo golpe 200 no 3° frame da animação 200.
a ação 201, será a ação do clone parado.
[Passo 4]
[Statedef 201]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 0 <-- observe que a animação 0 usada é a mesma animação 0 do seu char parado (stand).
ctrl = 0
sprpriority = 2
poweradd = 0
[State 201, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
# até essa parte do tudorial, você já deve ter entendido como criar um helpers.
agora iremos passar para a parte de programação do helper, criando os states
dele andando, batendo e assim por diante.
Movimentação dos Clones
# observe que paramos no state que indicava a posição do helper
como stand, no caso o helper iria aparecer e ficar na animação 0.
só que eu não quero que o helper apareça e fique parado, he,he.
ok, então vamos fazer o helper andar.
[Passo 1]
[Statedef 201]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 0
ctrl = 0
sprpriority = 2
poweradd = 0
# nessa parte, iremos determinar um state para ele mudar
assim que ele aparecer. no caso ele mudará para o state 202.
[State 201, 1]
type = ChangeState
trigger1 = Animtime = 0
value = 202
# agora criaremos o state do helper andando.
bom, nesse caso, ele irá seguir o player 2.
[Passo 2]
[Statedef 202]
type = S
movetype = A
physics = S
anim = 20 <-- observe que a animação 20 é a mesma animação do seu char (andando).
ctrl = 0
velset = 0,0
sprpriority = 3
# agora vamos imaginar que a animação do seu char andando seja de 3 frames de sprites.
para fazer o helper andar você fará o seguinte:
iremos usar o comando velset.
[State 202, 1]
type = Velset
trigger1 = animelem = 1
trigger2 = animelem = 2
trigger3 = animelem = 3
x = ?? <-- determine o valor da velocidade do eixo x.
# observe como o seu char se movimenta.
para poder chegar em um valor exato.
# o comanto turn, fará que o helper sempre siga o player 2
mesmo o helper estando com o eixo x maior ou menor que o player 1.
os trigers indicam valores de tempos alternativos.
[State 202, 2]
type = turn
triggerall = P2BodyDist X < 0
trigger1 = time =10
trigger2 = time =30
trigger3 = time =50
# ok, agora eu não quero que o meu char fique andando infinitamente, he,he.
então vamos criar um state do helper batendo. para finalizar o state 202
faça o seguinte:
[State 202, 3]
type = ChangeState
trigger1 = P2BodyDist X < 18 <-- segnifica que, quando o player 2 estiver numa distancia menor que 18
trigger1 = time = 60 <-- e num tempo de 60
value = 203 <-- mudará para o state 203.
# sempre deixe 2 states que indique a finalização dos states dos helpers.
se ele estiver em um determinado por e não executar um ação ele sempre
executará outra asão mediante os states indicados por você.
[State 202, 4]
type = ChangeState
trigger1 = P2BodyDist X > 18 <-- segnifica que, quando o player 2 estiver numa distancia menor que 18
trigger1 = time = 20 <-- e num tempo de 20
value = 201 <-- mudará para o state 201.
# ele seguirá da seguinte maneira, se o helper estiver numa distancia menor que 18 do player 2
ele irá executar o state de ataque, que no caso seria o state 203.
se ele estiver diferente desse valor, ele irá executar o state 201 que no caso é a stand e assim por diante.
# agora vamos criar o state 203, esse state será o state em que o helper fará um golpe
tipo um soco ou chute. vamos usar como exemplo a animação 200 do seu char
que em todos os padrões seria um soco.
[Passo 3]
[Statedef 203]
type = S
movetype = A
physics = S
anim = 200 <-- observe que é a mesma animação do seu char (dando um soco).
ctrl = 0
velset = 4,0
sprpriority = 3
# você colocará o mesmo hitdef do state do soco nesse state.
vamos imaginar que o movimento do soco do seu char tenha 5 frames de animação
e que o dano está na animação 3
[State 203, 1]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA
damage = 30, 0
getpower = 0
givepower = 14
animtype = Light
guardflag = MA
hitflag = MAF
priority = 2, Hit
pausetime = 10, 10
sparkno = 0
sparkxy = -10, -20
hitsound = 5, 0
guardsound = 6, 0
ground.type = low
ground.slidetime = 10
ground.hittime = 10
ground.velocity = -4
airguard.velocity = -1.9,-.8
air.velocity = -1.4,-3
air.hittime = 12
# para finalizar esse state faça o seguinte:
indique para ele voltar para animação de stand que no caso é a animação 201.
para que assim ele sempre volte a repetir ambos os states.
[State 203, 2]
type = ChangeState
trigger1 = Animtime = 0
value = 201
# agora, eu gostaria que o helper morrece com um golpe.
tipo para ficar igual no desenho, he,he.
mediante a isso vamos criar um state de morte para o helper.
[Passo 4]
[Statedef 204]
type = S
movetype = I
physics = S
anim = 204
ctrl = 0
velset = 0,0
sprpriority = 3
[State 204, 1]
type = destroyself
trigger1 = time = 45 <-- tempo em que o helper irá sumir.
# não esqueça de indicar em todos os states do helper o seguinte:
quando você for colocar o HitOverride observe quantas animações
cada state de seu char terá, se tiver 5 animações, deixe como está no exemplo.
se tiver menas animações, diminue o numero de animelem.
[State 0, 1]
type = HitOverride
trigger1 = animelem = 1
trigger2 = animelem = 2
trigger3 = animelem = 3
trigger4 = animelem = 4
trigger5 = animelem = 5
attr = SCA, AA, AP, AT <-- acertos de ataque.
stateno = 204
time = 35
[State 0, 2]
type = changestate
triggerall = time >= 35
trigger1 = win
trigger2 = RoundState = 4
value = 204
ctrl = 0
# o HitOverride indica que o helper irá passar para o state 204
se ele for acertado mediante as animações indicadas em cada state.
já o changestate ele irá passar para o state 204
quando o round terminar no caso trigger1 = win e assim por diante.
# observe que eu criei apenas os movimentos do helper:
parado (stand), andando (Walking) e dando um soco (Punch) e a parte de morte.
mediante esse esquema e você tendo criatividade, você poderá inventar muito mais.