| Logado como Visitante | Grupo "Visitantes" Está vendo: Forum | Quarta, 04/12/2024, 2:09 PM | RSS |
Anime Mugen


[ Novas Mensagens · Membros · Regras · Buscar · RSS ]
  • Página 1 de 1
  • 1
Moderador do fórum: lMDl  
Fazer o inimigo rebater na parede
TidusData: 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.


 
taylorData: 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-SanData: 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'ç


 
  • Página 1 de 1
  • 1
Buscar:

Copyright Anime Mugen © 2024 Hospedado por uCoz
Refresh Smileys Manager
Mini-chat