segunda-feira, 9 de março de 2009

utilizando multi chars

Introdução
=======
Multi-char, bem pode não ser nomeado assim mas é um personagem que possui mais de uma forma de apresentação (sprites diferentes). Um exemplo seria um MegaMan que possui a forma normal e uma forma com a super armadura. Cada forma possui animações e golpes próprios e tudo é controlado por uma variável que decide qual forma/estado o personagem se encontra. Usei isso no meu personagem MetaGang para fazer com que fosse permitido jogar com até 4 personagens diferentes 

Passo 1: Fazendo o Sff e Air
==================
Na hora de fazer o Sff use os sprites principais do jogador com os grupos padrões do mugen, os sprites extras devem ser postos em grupos separados.
É no Air que esta toda a manha, será adicionado uma nova animação para cada animação padrão do mugen.

Ex: Para exemplificar melhor vou usar aki o Air do MetaGang

;Meta-Trident actions
[Begin Action 0];stand <--- Animação padrão 0 = Posição em Pé
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
0,0, 0,0, 5
0,1, 0,0, 5

[Begin Action 1];stand <--- Nova Animação 1 = Posição em Pé da segunda forma
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
1,0, 0,0, 5
1,1, 0,0, 5

[Begin Action 2];stand <--- Nova Animação 2 = Posição em Pé da terceira forma
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
2,0, 0,0, 15
2,1, 0,0, 5


Para cada animação faz-se uma ou varias animações dependendo de quantas formas seu personagem possua.
É de total importancia que o número de sprites das diferentes formas sejam iguais.

Animação em Pé == Action 0 --> Action 1 --> Action 2
Animação andando para frente == Action 20 --> Action 21 --> Action 22
Animação andando para tras == Action 24 --> Action 25 --> Action 26
.
.
.

Você pode usar esse método para os ataques tambem

Passo 2: Editando o Common.cns
======================
Seu personagem deverá ter uma versão própria do common.cns, faça uma cópia do original que está na pasta data para a pasta do seu personagem. Pode renomear se quiser portanto que insira corretamente o nome no arquivo def
Ex:
[Files]
cmd=metag.cmd 
cns=meta1.cns
st=meta1.cns
st2=metast1.cns
st3=metast2.cns
st4=metast3.cns

stcommon=metam.cns <--- adicione esta linha (stcommon= *common.cns)

sprite=metag.sff
anim=metag.air 
sound=metag.snd 
pal1=metag1.act
pal2=metag2.act
pal3=metag3.act
pal4=metag4.act
pal5=metag5.act
pal6=metag6.act


Muita atenção na hora de editar o common pois ele controla todas as animações padrão do seu char.
Será preciso usar uma variavel para controlar o valor da forma atual do seu personagem, quando esse valor for modificado as animações mudaram automaticamente.
Ultilizando o MetaGang como exemplo eu usei a Var(58) para guardar esse valor já que a Var(59) estava reservada para a IA. Modificar o IntPersistIndex ou não vai depender de sua preferencia, se quiser que o char volte ao normal a cada round não altere, caso pretenda que fique transfomado até uma nova ordem sua diminuia o IntPersistIndex para uma valor abaixo da sua variavel Ex:57

Já no Common.cns vai ser preciso adicionar um código para auto-selecionar o número da animação da forma atual de seu personagem.
Os Statedefs básicos possuem esse esquema onde não é relacionado diretamente a animação usada, não existe "Anim = xxx", basta modificar ou criar o state para alterar a animação usada (ChangeAnim).
; Stand
[Statedef 0]
type = S
physics = S
sprpriority = 0
<--- Não informa a animação ...
velset=0,0

[State 0, 1]
type = ChangeAnim <--- State para troca de animação 
triggerall=Anim!=0+Var(58)
trigger1 = Anim != 0 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0 ;Turn anim over
value = 0+Var(58) <--- Lembra do que você fez no Air? é complementado aki 

-----------------------------------------------------------------
; Walk
[Statedef 20]
type = S
physics = S
sprpriority = 0

[State 20, 3]
type = ChangeAnim
triggerall=Anim!=20+Var(58)
triggerall = vel x > 0
trigger1 = Anim != 20 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 20+Var(58)

[State 20, 4]
type = ChangeAnim
triggerall=Anim!=24+Var(58)
triggerall = vel x < 0
trigger1 = Anim != 21 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 24+Var(58)

Para os outros States que direcionam a animação basta acresentar o seguinte código
; SGUARDHIT2 (knocked back)
[Statedef 151]
type = S
movetype= H
physics = S
anim = 150+Var(58) <--- "+Var(58)"

Continue modificando o common com muita atenção

Passo 3: Mudando a Forma!
==================
Aki fica por sua escolha, como seu personagem será transformado, trocado, modernizado... seilá 
pode escolher fazer um Statedef para trocar a forma em um super ou para ser ativado depois de atingir certo nivel de energia ou outra necessidade. Isso fica por sua escolha.

Ex:
Usando um comando

Arquivo CMD:

;------------------------- 
[State -1];Meta-Trident
type=ChangeState
trigger1=command="Fy" <--- comando para a troca
value=400

Arquivo Cns:

[Statedef 400];Seleciona
statetype=C
physics=S
anim=1
ctrl=0
velset=0,0

[State 400]
type=PlaySnd
trigger1=!Time
value=50,7

[State 400]
type=VarSet
trigger1=Time=1
v=58
value=1 <--------------Var(58) passa para o valor 1 => Animação da segunda forma 

[State 400]
type=ChangeState
trigger1=Time=2
ctrl=1
value=0


Perguntas??? Duvidas??? Traumas??? ... (Imitando meu prof de História )

Vlw aew

Um comentário:

  1. Oi cara, nossa é muito bom esse tutorial, voce só esqueceu de dizer que se cair num common state da pau em tudo, como no caso de um throw/agarrão...
    Voce tem alguma dica pra resolver isso ???

    ResponderExcluir