Kunais ou Shurikens interativas Olá pessoal. mas uma vez estou aqui, agora, para explicar como criar kunais ou shurikens interativas com os chars. lembrando que eu não colocarei uma codificação certa para você eu gostaria que você aprendesse a fazer. Siga a explicação abaixo, que você irá entender como fazer. vejam o video no link abaixo para entenderem melhor: link: http://br.youtube.com/watch?v=7dPgECGazGg # vamos lá. no tutorial dos clones ensinei como criar helpers. então, você que leu o tutorial de kage bushins, já deve saber uma base de como criar helpers. # primeiro, vamos criar um state de animação do seu char jogando a kunai. [Passo 1] [Statedef ?] type = S movetype= A physics = S juggle = 0 velset = 0,0 anim = ? <-- crie uma animação do char jogando a kunai. ctrl = 0 sprpriority = 2 poweradd = 20 # nessa parte que entrará o helper. agora, vamos imaginar que a animação que você criou do seu char jogando a kunai sejá de 4 frames e eu quero que a kunais apareça no segundo frame dessa animação. [State ?, ?] type = helper trigger1 = AnimElem = 2 <-- numero do frame em que a kunai irá aparecer, name = "Kunai" <-- nome do helper mostrado no mugen. id = ? <-- id de remoção do helper. pos = 0,0 <-- posição do helper em relação ao jogador. postype = p1 <-- P1 indica que sairá do player 1, que o lançou. stateno = ?? <-- state de chamada do helper. helpertype = normal <-- se você colocar o helper como player ele será como um jogador. ownpal = 0 # finalize o state. [State ?, ?] type = ChangeState trigger1 = AnimTime = 0 value = 0 ctrl = 1 # ok, agora vamos criar a animação da kunais em linha reta para acertar o oponente. observe que o state do helper é o ??. [Passo 2] [Statedef ??] type = S movetype = A physics = N ctrl = 0 anim = ?? <-- animação da kunai. sprpriority = 5 velset = 0,0 juggle = 0 # vamos determinar uma velocidade para o eixo x. para que a kunai se mova em linha reta. [State ??, ?] type = velset trigger1 = 1 x = ? <-------- determine a velocidade da kunai. y = ? # não esqueça de determinar um hitdef nessa animação. observe o comando Trigger1 = !time. indica que acertará o p2, mediante um contado. [State ??, ?] type = HitDef Trigger1 = !time attr = S,SP damage = 50, 20 hitflag = MAF guardflag = MA priority = 1, Hit pausetime = 1,10 sparkno = 1 sparkxy = 0,0 hitsound = 5,2 guardsound = 6,0 ground.type = heavy ground.slidetime = 10 ground.hittime = 15 ground.velocity = -1.5,-2 air.velocity = -1.2,-3 guard.velocity = -5 fall = 1 # o comando NotHitBy indica que a kunai não poderá ser acertada por um hit comum. [State ??, ?] type = NotHitBy trigger1 = Time >= 0 time = 1 value = SCA, NA, SA, HA, NT, ST, HT ignorehitpause = 1 # o comando HitOverride mais uma vez é o pondo chave nessa história, he,he. é através dele que a kunai ficará interativa. mediante a esse comando, toda vez que um poder se chocar com a kunai, o HitOverride fará o helper pular para um state seguinte. [State ??, ?] type = HitOverride trigger1 = 1 attr = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT stateno = ??? time = -1 # para finalizar o state observe que o changestate indica que quando a kunai acertar o p2 no caso movecontact o helper passará para o state ????. se a kunai passar pelo player 2 ela irá assumir o comando frontedgedist. Determine uma distancia negativa, para quando a kunai passar pelo player 2 ela suma. [State ??, ?] type = changestate trigger1 = movecontact trigger2 = frontedgedist <= ? value = ???? # ok, voces lembram da parte que falei sobre HitOverride. o state que deixará a kunai interativa iremos fazer agora. observe. # crie um novo state. bom nessa parte, iremos aplicar um esquema para que quando a kunai se chocar e cair no chão seja possivel o player 2 interagir com a kunai. [Passo 3] [Statedef ???] type = S movetype= I physics = N juggle = 4 poweradd= 0 ctrl = 0 velset = 0,0 anim = ??? <--- crie uma animação falsa para esse state. # nessa parte, iremos criar um explod para seguir a animação do state ???. logo, coloque a animação da kunai no explod. [State ???, ?] type = Explod trigger1 = time = 0 anim = ???? <------- coloque a animação da kunai aqui. ID = ???? <--- id de remoção do explod. pos = 0,0 postype = p1 facing = 1 bindtime = 9999 <-- o bindtime fará o explod seguir a mesma animação do helper. removetime = -1 scale = 1,1 sprpriority = 3 removeongethit = 1 <--- esse comando fará com que a animação do explod não se repita. # não esqueça de deixar a animação do explod com o mesmo numero de frames da animação do helper, no caso criamos uma animação sem sprites. # aqui está o ponto chave, de termos criado o explod. o comando Turn faz a kunai mudar de posição me diante o ladoda tela em que você estiver. no caso se você estiver do lado direito da tela o helper estará virado para o lado direito. o explod faz isso não aparecer. por que o explod está linkado no helper de uma forma que ele não é reconhecido pelo comando Turn. [State ???, ?] type = Turn trigger1 = p2bodydist x < - 30 # no momento do acerto, a kunai irá voar pelo stage determine os eixos do Velset. [State ???, ?] type = VelSet trigger1 = !time x = ? y = ? # deixe a gravidade 0 do eixo y. [State ???, ?] type = Gravity trigger1 = !(Pos Y >= 0) # para que a kunai caia no chão deixe o Posset zerado. [State ???, ?] type = PosSet trigger1 = Vel Y > 0 trigger1 = Pos Y >= 0 y = 0 persistent = 0 # faça a mesma coisa para o Velset. [State ???, ?] type = VelSet trigger1 = Vel Y > 0 trigger1 = Pos Y >= 0 y = 0 x = 0 # nessa parte iremos linkar um novo state com o comando HitOverride. para que assim os states possam se repetir entre si. para ativar a ação do HitOverride, não esqueça de colocar uma caixa de colisão na animação ???. # vamos imaginar que a ação ??? tenha 4 frames e que no 4 frame você colocou uma caixa de colisão. [State ???, ?] type = HitOverride trigger1 = animelem = 4 <-- quarto frame da animação ??? attr = SCA, AA, AP, AT stateno = ????? time = -1 # o helper que no caso é a kunai, só irá sumir se o char que jogou ela passar por cima dela, ok? para isso acontecer, faça o seguinte. lembre-se, você colocou um explod também, então usará o mesmo comando para o explod. [State ???, ?] type = RemoveExplod trigger1 = root, Pos X = [pos X -12,Pos X +12] trigger1 = root, Pos Y = [Pos Y -0,Pos Y +5] id = ???? <-- vai remover o explod. ignorehitpause = 1 persistent = 1 [State ???, ?] type = DestroySelf <-- vai remover o helper. trigger1 = root, Pos X = [pos X -12,Pos X +12] trigger1 = root, Pos Y = [Pos Y -0,Pos Y +5] # lembrando que o comando root, só vale para o char que lançou a kunai. então a kunai só irá sumir se o char que a lançou passar por cima dela. # agora vamos criar o state ????? para que assim os hitOverride's sempre se repitam entre si. [Passo 4] [Statedef ?????] type = S movetype= I physics = N juggle = 4 poweradd= 0 ctrl = 0 velset = 0,0 anim = ????? <--- crie uma animação falsa para esse state. # nessa parte, iremos criar um explod para seguir a animação do state ?????. logo, coloque a animação da kunai no explod. [State ?????, ?] type = Explod trigger1 = time = 0 anim = ?????? <------- coloque a animação da kunai aqui. ID = ?????? <--- id de remoção do explod. pos = 0,0 postype = p1 facing = 1 bindtime = 9999 <-- o bindtime fará o explod seguir a mesma animação do helper. removetime = -1 scale = 1,1 sprpriority = 3 removeongethit = 1 <--- esse comando fará com que a animação do explod não se repita. # não esqueça de deixar a animação do explod com o mesmo numero de frames da animação do helper, no caso criamos uma animação sem sprites. # aqui está o ponto chave, de termos criado o explod. o comando Turn faz a kunai mudar de posição me diante o lado da tela em que você estiver. no caso se você estiver do lado direito da tela o helper estará virado para o lado direito. o explod faz isso não aparecer. por que o explod está linkado no helper de uma forma que ele não é reconhecido pelo comando Turn. [State ??????, ?] type = Turn trigger1 = p2bodydist x < - 30 # no momento do acerto, a kunai irá voar pelo stage determine os eixos do Velset. [State ?????, ?] type = VelSet trigger1 = !time x = ? y = ? # deixe a gravidade 0 do eixo y. [State ??????, ?] type = Gravity trigger1 = !(Pos Y >= 0) # para que a kunai caia no chão deixe o Posset zerado. [State ??????, ?] type = PosSet trigger1 = Vel Y > 0 trigger1 = Pos Y >= 0 y = 0 persistent = 0 # faça a mesma coisa para o Velset. [State ??????, ?] type = VelSet trigger1 = Vel Y > 0 trigger1 = Pos Y >= 0 y = 0 x = 0 # nessa parte iremos linkar um novo state com o comando HitOverride. para que assim os states possam se repetir entre si. para ativar a ação do HitOverride, não esqueça de colocar uma caixa de colisão na animação ??????. # vamos imaginar que a ação ?????? tenha 4 frames e que no 4 frame você colocou uma caixa de colisão. [State ??????, ?] type = HitOverride trigger1 = animelem = 4 <-- quarto frame da animação ??? attr = SCA, AA, AP, AT stateno = ??? <-- irá voltar para o state ??? time = -1 # o helper que no caso é a kunai, só irá sumir se o char que jogou ela passar por cima dela, ok? para isso acontecer, faça o seguinte. lembre-se, você colocou um explod também, então usará o mesmo comando para o explod. [State ??????, ?] type = RemoveExplod trigger1 = root, Pos X = [pos X -12,Pos X +12] trigger1 = root, Pos Y = [Pos Y -0,Pos Y +5] id = ???? <-- vai remover o explod. ignorehitpause = 1 persistent = 1 [State ???, ?] type = DestroySelf <-- vai remover o helper. trigger1 = root, Pos X = [pos X -12,Pos X +12] trigger1 = root, Pos Y = [Pos Y -0,Pos Y +5] # lembrando que o comando root, só vale para o char que lançou a kunai. então a kunai só irá sumir se o char que a lançou passar por cima dela. # lembrando que os valores dos pos x e y são valores que eu padronizei. mas você pode aplicar valores diferentes. # agora para finalizar iremos cria o state se no caso a kunai acertar o enimigo. que no caso seri o state ???? que foi apontado no passo 2 do tutorial. crie um novo state. [Statedef ????] type = S movetype= I physics = S juggle = 1 ctrl = 0 anim = ???? <-- animação da kunai quando acertar o enimigo. velset = 3,0 poweradd = 20 # finalize o state. [State ????, ?] type = Destroyself <--- irá remover o helper depois do acerto ou se passa pelo enimigo. trigger1 = time = 30 __________________________________________________________ bom pessoal é só. espero que tenham entendido o esquema.
|