| Tidus | Data: Domingo, 16/01/2011, 12:05 PM | Mensagem # 1 |  
| 
 Criador 
Grupo: Administradores 
Mensagens: 557 
Awards:  0 
Reputação:  25 
Status: Offline 
 
 | 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! 
 
   
   Conhecimento é a única virtude e ignorância é o único vício. 
   Twitter - Follow Me   www.jgnetwork.com.br | JG Network - Desenvolvimento em Web. 
        
 |  
|   | 
 |    | 
| taylor | Data: Domingo, 16/01/2011, 12:07 PM | Mensagem # 2 |  
| 
 Editor 
Grupo: Usuários 
Mensagens: 158 
Awards:  0 
Reputação:  15 
Status: Offline 
 
 | Muito bom thunderbert. Otimo code, muito bem explicado o/
 
  
 |  
|   | 
 |    | 
| Dih_Nii-San | Data: Segunda, 17/01/2011, 10:50 AM | Mensagem # 3 |  
| 
 Criador Iniciante 
Grupo: Usuários 
Mensagens: 430 
Awards:  1 
Reputação:  20 
Status: Offline 
 
 | Quote (taylor) Muito bom thunderbert. Otimo code, muito bem explicado o/      ² :| -q   taylor chegou primeiro -q   abráa'ç
 
  
 |  
|   | 
 |    |