domingo, 15 de maio de 2011

Série Como Programar - Power Charge

Introdução:
Power Charge, é um recurso usado para "encher" a "barra de power"(power-bar), de seu char, para execução mais rápida de supers/hypers.
Exemplos de jogos que usam isso: The King of Fighters, Capcom vs SNK 2, Art of Fighting, etc... 

Indo para o AIR - Começando a montar a animação:
Primeiro, teremos que ter as sprites do char executando power charge. :P
Exemplo:


Nesse exemplo, os AnimElems 3 e 4 ficam em loop (repetição), até o jogador parar de fazer o comando do power charge. Para isso, coloque a linha loopstart antes do animelem 3 da anim.
Lembre-se de por as caixas de colisões azuis em toda animação.
Segundo, teremos que ter as sprites do char saindo do comando power charge.
Exemplo: a anim poderia ser a mesma anim da execução do power charge, só que de "tras pra frente", e de preferência, com um timming (tempo de animação) menor.
PS.:Para melhor explicação, deixe no momento a animação de execução, com o grupo 700.
PS2.:Para melhor explicação, deixe no momento a animação de término, com o grupo 702.

 
Indo para o AIR - Continuando a montar a animação (opcional):
Vamos montar a animação do "efeito" que aparece na frente (ou tras, ou ambos :P):

Anime ele no air, de forma convencional, não precisa de caixas de colisões ou loopstart.
PS.:Para melhor explicação, deixe no momento essa animação, com o grupo 705.
PS2.: Para melhor "visualização" entre seu char e o efeito, alinhe o efeito num jeito que se "encaixe" nos pés do char.


Indo para o CNS - Criando o StateDef:
Primeiramente, deixei o comando do Power Charge, para ser pressionados os botões C e Z juntos, sem soltar.
Depois, faremos como está nos códigos abaixo:

; Power Charge


;Esse statedef, terá seu tipo (type) igual ao do statedef anterior
;seu movetype, é nulo
;seu physics será “custom”

;seu controle (control/ctrl) é zero, ou seja
;não podemos locomover o char, quando ele estiver nesse statedef.

[Statedef 700]
type = U
movetype= I
physics = N
velset = 0,0
ctrl = 0
anim = 700
sprpriority = 2


;Esse PowerAdd irá adicionar 15 de power
;no char, a cada tick que estiver executando o PowerCharge.

[State 700, PowerAdd]
type = PowerAdd
trigger1 = Anim = 700
value = 15


;Esse é o efeito do Power Charge
[State 700, Effect]
type = Explod
trigger1 = !NumExplod(705)
anim = 705
ID = 705
pos = 0,0
postype = p1
facing = facing
bindtime = -1
removetime = -2
sprpriority = 5
supermovetime = 9999
pausemovetime = 9999


;Após solto um dos botões do comando
;Ou ter chegado ao máximo de sua barra de energia
;Troca para animação de término

[State 700, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 700
trigger1 = Power = PowerMax
trigger2 = command != "holdc"
trigger3 = command != "holdz"
value = 702

;Após o fim da animação do término
;Char volta ao StateDef 0 (State de Stand)

[State 700, ChangeState]
type = ChangeState
trigger1 = Anim = 702
trigger1 = !AnimTime
value = 0
ctrl = 1


Indo para o CNS - Adicionando um SCTRL no StateDef -2:
Agora, iremos adicionar o SCTRL RemoveExplod com os seguintes parâmetros:

;RemoveExplod serve para remover o explod pelo seu ID,
;seguido de seus parâmetros informados nos triggers.
[State -2, Remove Power Charge's Effect]
type = RemoveExplod
triggerall = NumExplod(705)
trigger1 = MoveType = H
trigger2 = StateType = L
trigger3 = Power = PowerMax
trigger4 = command !=
"holdc" || command != "holdz"
id = 705
;O triggerall informa, que para remover o explod de anim 705,
;o mesmo tem que estar em execução.
;O trigger1 e trigger2 informam que o explod sumirá

;quando o char estiver sendo atacado.
;O trigger3 informa que o explod sumirá quando o power
;do char for igual ao seu máximo.
;O trigger4 informa que quando solto um dos botões
;do commando power charge, o explod sumirá.

Indo para o CMD - Inserindo os comandos:
Agora chegou o momento de inserir os comandos holdc e holdz. Para fazer isso, vá nas partes dos comandos e cole isso:

[Command]
name = "holdc"
command = /c
time = 1

[Command]
name = "holdz"
command = /z
time = 1

Indo para o CMD - Colocando atributos no comando Power Charge
Agora, vamos fazer os atributos do nosso Power Charge, ser executado. Coloque no StateDef -1 do *.CMD,  o código abaixo:

[State -1, Power Charge]
type = ChangeState
value = 700
triggerall = Power < PowerMax
trigger1 = command = "holdc"
trigger1 = command = "holdz"
trigger1 = statetype !=
A
trigger1 = ctrl
;O triggerall informa que o comando só pode ser executado quando seu power não for o máximo.
;O trigger1 informa que devemos estar apertando os botões holdc e holdz,
;e que o char não deve estar no ar, e com controle sobre si.

Agora teste o seu Power Charge, e faça modificações a vontade!!! :D
Tutorial feito por SonSon3000

Nenhum comentário:

Postar um comentário

Por favor, opine um pouco sobre esse blog, e me diga o que acha do mesmo.
Dê criticas construtivas, diga-me o que posso mudar, diga-me o que está bom, diga-me o que está ruim, enfim.
As suas visitas e comentários são muito importantes para o blog!