Escolar Documentos
Profissional Documentos
Cultura Documentos
Essa parte do tutorial, irá se propor a usar algumas lógicas quando se for “misturar” os SCtrls e Triggers
(explicados na parte anterior desse tutorial).
Código:
[State 700, Animação do char executando o Power Charge]
type = ChangeAnim
trigger1 = command = “hold_c”
value = 700
Neste código não colocamos o elem embaixo de value, por que caso o elem não seja atribuído, ele será
igual a 1.
Agora à explicação do código em si. É até meio óbvia a situação, mas explicarei mesmo assim.
Quando o comando hold_c estiver sendo pressionado, a animação do personagem será 700.
Quando o comando hold_c não estiver sendo pressionado (que nesse caso, está sendo solto), a animação do
personagem será 705.
Logo após ter feito os dois ChangeAnims, faremos o ChangeState retornando ao StateDef “base” do
personagem (sua pose de luta, sem estar fazendo nenhuma ação):
[State 700, Voltando ao State Base]
type = ChangeState
trigger1 = Anim = 705
trigger1 = !AnimTime
value = 0
Preste bem atenção nas linhas em negrito. Se você prestou bem a atenção no código, verá que o
ChangeState só será executado, logo após a animação 705 ter acabado.
Ficando os três SCtrl juntos, ficaria assim:
[State 700, Animação do char executando o Power Charge]
type = ChangeAnim
trigger1 = command = “hold_c”
value = 700
Neste código, o oponente iria para a animação 6100, caso a mesma existir no *.air do oponente.
Caso contrário, iria para a animação 5000.
Então para também não causar bugs, podemos “privar” o ChangeAnim2 para chars que temos certeza que
tem os tais sprites requeridos.
Código:
[State 6200, Custom Anim – Para os chars Ryu,Ken,Sub-Zero e Scorpion]
type = ChangeAnim2
triggerall = !time
trigger1 = enemynear, name = “Ryu”
trigger2 = enemynear, name = “Ken”
trigger3 = enemynear, name = “Sub-Zero”
trigger4 = enemynear, name = “Scorpion”
value = 6200
Obs.: Você poderá adicionar triggers com números diferentes, iguais a enemynear,name = “nome do
oponente”.
Mas privando o ChangeAnim2 dessa forma, quando o oponente não se chamar Ryu, Ken, Sub-Zero ou
Scorpion, ele ficará sem animação, travado no custom state.
Então teremos que criar uma animação no ChangeAnim para os personagens que não são os que o
ChangeAnim2 procura:
Nesse exemplo, se os chars se chamarem Ryu, Ken, Sub-Zero ou Scorpion, será executado o
ChangeAnim2 com a animação 6200, caso contrário será executado o ChangeAnim com a animação 5000.
Esse simples exemplo diz que quando o time for maior ou igual a 0 (primeiro tick em diante) e menor ou igual
a 9 (décimo tick pra menos), fazendo que o SCtrl seja executado apenas nos primeiros 10 ticks do StateDef.
Já o triggerall ta dizendo que a animação 200 só será executada, quando a mesma não estiver sido
executada antes.
4. Executando um SCtrl num determinado tempo (em AnimElem/AnimElemTime)
Isso é útil para se fazer algo acontecer entre um AnimElem e outro, ou entre um tick do AnimElem e outro.
[State 200, Soco do char]
type = ChangeAnim2
triggerall = Anim != 200
trigger1 = AnimElem = 3, >= 0
trigger1 = AnimElem = 6, <= 4
value = 200
Isso faria que a Animação estivesse sendo executada entre o AnimElem 3 no primeiro tick, e entre o 5 tick do
AnimElem 6.
Espero que você que leu esse tutorial, tenha entendido os princípios e usos dos SCTRLS:
ChangeAnim, ChangeAnim2 e ChangeState.
E dos triggers que os auxiliam:
Time, Anim, AnimTime, AnimElem, AnimElemTime, StateNo e PrevStateNo.