|
Como fazer o inimigo rebater na parede Yo! Vim aqui hj pra postar um Tutorial de como fazer um inimigo rebater na parede! Eu acho q tem uma forma muito mais de fazer isso, mas eu simplesmente naum lembro como, ou realmente naum tem XD De qualquer forma, eu vo postar aqui ^^ 1º Passo: Animações Você deverá criar animações para os custom states, essas animações erão nosso último recurso já q muitos chars não possuem os sprites do grupo 5000 devidamente colocados... Você precisa de 2 animações: Animação 1 (vou chamá-la de Anim1 daqui para frente): - Sprite 5010,0 com tempo 5
- Sprite 5010,20 com tempo 40 e loop
Animação 2 (vou chamá-la de Anim2 daqui para frente): - Sprite 5010,20 com tempo 5
- Sprite 5030,0 com tempo 5 e inversão H
- Sprite 5010,10 com tempo 5, inverção H e loop
É lógico q você não precisa usar necessáriamente essas imagens, eu só uma seleção que julguei ser mais conveniente! Para quem sabe mecher no Air via bloco de notas, pode usar esse exemplo para as animações: Quote [Begin Action Anim1] ;<-- Substitua Anim1 pelo número desejado da Begin Action 5010,0, 0,0, 5, Loopstart 5010,20, 0,0, 40, [Begin Action Anim2] ;<-- Substitua Anim2 pelo número desejado da Begin Action 5010,20, 0,0, 5, 5030,0, 0,0, 5, H, Loopstart 5030,10, 0,0, 5, H, Tendo essas animações em mente, vamos para o próximo passo 2º Passo: HitDef Aqui você irá programar o HitDef do ataque para mandar o inimigo para um Custom State. Um Custom State é um State que está no seu CNS mas que será utilizado pelo inimigo. Você irá programar o HitDef normalmente, só precisará acrescentar a linha que levará ao Custom State (que eu chamarei de CSTATEX, onde X será referente ao devido Custom State) Então, programe o ataque da forma como quiser e acrescente essa linha no HitDef: Quote P2StateNo = CSTATE1 ;<-- Substitua CSTATE1 pelo valor do State desejado Tendo programado o ataque vamos programar os CSTATES 3º Passo: CSTATE1 O primeiro Custom State será responsável pela animação do inimigo voando, só lembrando q a velocidade é definida no HitDef! O que faremos aqui será apenas definir a animação do inimigo voando, e é aqui que entra em ação a Anim1, mas ela será nosso último recurso! O código ficará assim Quote [Statedef CSTATE1] ;<-- Substitua CSTATE1 pelo valor do Custom State type = A ;<-- O char (no caso, o inimigo) está no ar movetype= H ;<-- O char está levando hit physics = N ;<-- A física aplicada aqui será nula [State CSTATE1, Anim] type = ChangeAnim2 ;<-- o ChangeAnim2 é usado para fazer o inimigo buscar uma animação dentro do seu char trigger1 = Time = 0 ;<-- no início do state trigger1 = !selfanimexist(5030) ;<-- se a animação 5030 trigger1 = !selfanimexist(5035) ;<-- e 5035 não existirem value = Anim1 ;<-- irá usar a Anim1 [State CSTATE1, Anim] type = ChangeAnim ;<-- o ChangeAnim normal faz o inimigo buscar uma animação própria dele trigger1 = Time = 0 ;<-- no início do state trigger1 = selfanimexist(5030) ;<-- se existir a animação 5030 trigger1 = !selfanimexist(5035) ;<-- e não existir a animação 5035 value = 5030 ;<-- vai usar a animação 5030 [State CSTATE1, Anim] type = ChangeAnim trigger1 = Time = 0 trigger1 = selfanimexist(5035) ;<-- se existir a animação 5035 value = 5035 ;<-- vai usar a 5035 mesmo, pois essa é a animação que eu julguei ser mais adequada para a ocasião [State CSTATE1, State] type = ChangeState ;<-- Vai mudar de state trigger1 = HitShakeOver = 1 ;<-- Assim que o efeito do hit passar value = CSTATE2 ;<-- Substitua CSTATE2 pelo valor do próximo Custom State Tendo programado o primeiro Custom State, vamos para o próximo. 4º Passo: CSTATE2 Nesse Custom State, iremos definir o momento em que o inimigo bate na parede. Aqui também será definida a câmera para que ela não se mova, assim não vai parecer que o inimigo trombou no vento! O Código ficará assim: Quote [Statedef CSTATE2] ;<-- Substitua CSTATE2 pelo valor do Custom State type = A movetype= H physics = N [State CSTATE2, Velocity] type = HitVelSet ;<-- Define velocidade de Hit trigger1 = Time = 0 ;<-- No início do State x = 1 ;<-- a velocidade X será 1 y = 1 ;<-- a velocidade Y será 1 [State CSTATE2, Gravity] type = Gravity ;<-- Isso irá ativar a gravidade trigger1 = 1 ;<-- A gravidade estará ativada o tempo todo [State CSTATE2, No scroll] type = ScreenBound ;<-- Isso irá controlar a câmera triggerall = Pos y < -15 ;<-- A posição Y tem que ser menor do que -15 (quando menor o número, mais alto) trigger1 = BackEdgeBodyDist < 65 ;<-- Se a distância da "parede" de trás do inimigo for menor que 65 trigger2 = FrontEdgeBodyDist < 65 ;<-- Ou se a distância da "parede" da frente do inimigo for menor que 65 value = 1 ;<-- O inimigo não poderá se mover fora da tela movecamera = 0,1 ;<-- A câmera não seguirá o inimigo na horizontal, mas seguirá na vertical [State CSTATE2, Hit wall] type = ChangeState ;<-- Isso irá mandar o inimigo para o próximo Custom State triggerall = Pos y < -15 ;<-- Se a posição Y dele for menor que -15 trigger1 = BackEdgeBodyDist <= 20 ;<-- E a posição da "parede" de trás do inimigo for menor ou igual a 20 trigger2 = FrontEdgeBodyDist <= 20 ;<-- Ou a posição da "parede" da frente do inimigo for menor ou igual a 20 value = CSTATE3 ;<-- Substitua CSTATE3 pelo valor do próximo Custom State [State CSTATE2, Hit ground] type = SelfState ;<-- Isso irá mandar o inimigo para um State próprio dele trigger1 = (Vel y > 0) && (Pos y >= 0) ;<-- Se a Velocidade Y por maior que 0 (o inimigo está caindo) e a posição Y for maior ou igual a 0 (o inimigo está no chão ou abaixo do chão) value = 5100 ;<-- Vai mandar o Statedef 5100 do inimigo Tendo programado o segundo Custom State, vamos para o próximo. 5º Passo: CSTATE3 Nesse Custom State iremos definir o momento em que o inimigo volta da "parede", ou seja, será o último Custom State e também onde usaremos a Anim2, que também será nosso último recurso O código ficará assim: Quote [Statedef CSTATE3] ;<-- Substitua CSTATE3 pelo valor do terceiro Custom State type = A movetype= H physics = N [State CSTATE3, Vel Y] type = VelSet ;<-- Definiremos a velocidade Y com a qual o inimigo irá rebater trigger1 = Time = 0 ;<-- A velocidade será aplicada logo no início do state y = Y ;<-- Substitua Y pelo valor desejado [State CSTATE3, Vel X] type = VelSet ;<-- Definiremos a velocidade X com a qual o inimigo irá rebater trigger1 = Time = 0 x = X ;<-- Substitua X pelo valor desejado [State CSTATE3, Turn] type = Turn ;<-- Fará com que o inimigo vire trigger1 = (Time = 0) && (BackEdgeDist < 30) ;<-- No início do state e quando a distância da "parede" de trás do inimigo for menor que 30 [State CSTATE3, Gravity] type = Gravity trigger1 = 1 [State CSTATE3, Anim 5050] type = ChangeAnim ;<-- Vai mandar o inimigo para uma animação própria dele trigger1 = Time = 0 ;<-- No início do state trigger1 = !SelfAnimExist(5052) ;<-- Se a animação 5052 não existir value = 5050 ;<-- vai mandar para a animação 5050 [State CSTATE3, Anim 5052] type = ChangeAnim trigger1 = Time = 0 trigger1 = SelfAnimExist(5052) ;<-- Se a animação 5052 existir value = 5052 ;<-- Vai mandar para a animação 5052 [State CSTATE3, Anim 5060] type = ChangeAnim trigger1 = Vel Y > -2 ;<-- Se a velocidade Y for maior que -2 trigger1 = Anim = 5050 ;<-- E a animação for a 5050 trigger1 = SelfAnimExist(5060) ;<-- E existir a animação 5060 persistent = 0 ;<-- Irá ativar esse comando apenas uma vez value = 5060 ;<-- vai mandar o inimigo para a animação 5060 [State CSTATE3, Anim 5062] type = ChangeAnim trigger1 = Vel Y > -2 trigger1 = Anim = 5052 ;<-- Se a animação for a 5052 trigger1 = SelfAnimExist(5062) ;<-- E existir a animação 5062 persistent = 0 value = 5062 ;<-- Vai mandar o inimigo para a animação 5062 [State CSTATE3, Hit ground] type = SelfState trigger1 = (Vel y >0) && (Pos y >= 0) value = 5100 ;<-- Vai mandar o inimigo para o State 5100 E chegamos ao fim do Tutorial! Espero tê-los ajudado! Se alguém souber de uma forma mais fácil de fazer isso me avise ^^ Boa sorte a todos os makers! Flws!
|
|