[TUTORIAL] Movimento de undade por trigger (knockback) || MUI extra || KB group demo map extra
TeaM KingS :: Games: :: Warcraft: World Editor :: Tutoriais: Gui, Jass, Spells, Terrain, Modelagem, Textura :: Triggers(GUI)
Página 2 de 2 • 1, 2
[TUTORIAL] Movimento de undade por trigger (knockback) || MUI extra || KB group demo map extra
Breve Introdução
Bem, este tutorial é sobre um system de movimento udado em muitos spells, um dos exemplos mais famosos é o knockback, embora seja extremamente necessitado o conhecimento deste dito de "tecnica" em spells que envolvem movimento, poucas pessoas realmente sabem movimentar em trigger, por isso criei este topico com um spell exemplo para que eu possa explicar melhor a logica de movimento em trigger.
Bem vou usar dois maps, o de knockback ( ) e de knockback em area( )
knock back area screenshot trigger
- Spoiler:
Indice:
Magia de base
A trigger de inicio da magia
A trigger que realmente importa
Finalizando a spell
Resumão (pra quem nao quer ler tuuudo)
knock back em group //!novo
Magia de base
Usei o storm bolt, como magia de base. Se você estiver se perguntando como mecher nesse storm bolt? Bem leia um pouco sobre object editor, tem um tutorial aqui no teamkings.
Bem voltando eu usei o storm bolt como base na spell e editei umas coisinhas principalmente o dano para 0 (item D ), tirei o missel art (item A ), tirei a velocidade do missel (item C ), retirei tambem os buffs, que originalmente é o de stun(item E) e mudei a cast range, que é a distancia minima que ele pode estar para ativar a spell (item F)
- Spoiler:
A trigger de inicio da magia
Bem, configuramos a spell que vai desencadear as trigger que fazem parte da nossa spell, agora so falta as propias triggers
entao vamos la, eu criei 3 triggers, a primeira se chama KnockBack INIT ( o nome nao importa ) com initiality on, a segunda KnockBack MOVE ( o nome nunca importa ) com initiality off e a utima KnockBack END com initiality on
vamos a primeira:
A ideia desta primeira trigger é capturar a ocorrencia da spell , o alvo e o dono da spell
por isso eu criei 2 variaveis (<< se nao sabe nada sobre variavel sugiro ler este tuto do raziel sobre variaveis, vai ajudar ),
uma variavel é de unit com array [2] e uma point, criei uma variavel real e uma variavel timer (variavel usada em contagem regressiva) .
fiz o seguinte: primeiro coloquei um evento de uma unidade iniciando uma spell e coloquei a condition como a spell do hero que eu criei,
em seguida editei as veriaveis .
Variavel de unit [1] como a unidade responnsavel pelo evento (A), no caso a responsavel por iniciar a spell como tar em event,
editei a variavel de unit [2] como o alvo da ação (B).
Em seguida editei a variavel point como a posição da unidade alvo (C),
defini a variavel real como o angulo de visao da unidade alvo (D); tudo isso vou usar no movimento ;
adicionei um efeito para deixar mais atraente (E),
dei um dano a unidade alvo para começar (F),
pausei o hero (G), destroi o efeito especial (H),
iniciei uma contagem regressiva usando uma timer (I),
ativei a trigger de movimento ate entao desativada (J) e por ultimo ,mas nao menos importante
removi o point que eu criei para evitar leaks (veja sobre leaks aqui )
- Spoiler:
A trigger que realmente importa
bem é nessa proxima trigger que esta a magia do movimento, ao ver a imagem vcs vao ver que nao é nada demais, quase tudo na programação é questao de visao e bom gosto.
Bem nesta trigger, que vai ser ativada pela anterior , usaremos :
a variavel point[1],
a variavel real e criaremos a point[2],
Bem,,, inicei a trigger com um event de periodic time ( que literalmente significa tempo periodico, ou seja de tempo em tempo )
é isso que vai dar o efeito de movimento, por que na verdade, essa tecnica de movimento, frequentemente usada por programadares warcraft , nada mais é do que mover instantaniamente de um ponto pra outro muito proximo, em pouquissimo tempo, isso claro repetido vaaaarias vezes, a maioria usa 0.02 seconds, significa que em 1 segundo a trigger é repetida 50 vezes (sei la se é assim msm,,, hummm 0.02x5=0.10,,,0.10x10 = 1.00,, é isso msm 50 vezes), o q dar o efeito de que a unit esta sendo "arrastada" no mapa.
bem o periodic event q eu usei foi de 0.05 seconds (A), usei uma contidion que para o movimento nao tem importancia menhuma, que foi (unit[2] is alive) equal true (B), qur significa q so vai executar as actions se a unidade alvo, que é a unit[2] definida la atras, estiver viva, para mim é bom para nao acabar arrastando a unit mesmo se ela tiver morta kkkk.
action:
eu resetei as variaveis point[1] (C) , real ( que é o angulo de visao do alvo ) (D) e criei uma nova variavel a point[2] (E)
eu a fiz com o seguinte pensamento: ela é um point with polar offset ( a respeito deste, aqui no tk nao achei, achei no thehelper, mas ta em ingles, é o jeito mas se quiser do uma rapida explicação depois dou link),
onde como ponto de partida usei a posição do unit[2] na distancia de 50 (para quem nao faz ideia, é + - assim : a distancia de uma unit que ataca corpo a corpo é de 100, seria metade desta distancia coisa de 1/2 centimetro +- se vc for medir na tela) na direçao , bemmm a direção fiz uma conta, no warcraft msm,
peguei o angulo de visao da unidade alvo (variavel que eu to chamando de real) e adicionei 180, (para quem nao faz ideia o que isse 180 significa veja aqui um tuto do jeverson sobre angulos), criei um efeitozinho para animar(F), coloquei um dano de 5 (H) na unit[2] e
"mandei" a unidade mover instantaniamente para o point[2] (I),
tirei o efeito que criei (J) , para nao ficar criando toda horaa e ficaria uma confusao, lag, etc... e removi os points para nao causar leak (L) , aprendi do lcc ^^.
- Spoiler:
Finalizando a spell
Bem essa ultima trigger , ela é sem "importancia", ela tem a funçõa de "desligar" tudo .
ela so ativa quando termina o countdown que eu fiz laaa na primeira trigger (A), ou seja depois de 2 segundos apos ter iniciado a spell,
ela "despausa" a unit[1], o hero da spell, tira o valor das variavels (B) e desativa a KnockBack MOVE (C), a trigger de movimento.
- Spoiler:
Resumão
RESUMINDO:
a trigger de movimento, ela acontece de pouquissimo tempo em pouquissimo tempo, para dar o de que esta andando, pega a posiçào atual do objeto, pode ser qualquer coisa dummy(geralmente em spells de misseis) e units (como neste caso, com a unidade alvo), define uma variavel de point, ou posição, que é criado com referencia a posição da unidade que esta sendo movida, mas so que um pouco mais distante usando como direção tb o angulo de visao da unidade movida,e em seguida move instantaniamente, ou seja meio que "teletransporta", mas isso tudo é feito repetidas vezes que o efeito é de que esta se movendo, bem é isso, aberto a criticas e perguntas ^^,,, a sim se eu realmente ajudei, da um + pf
Knock back em area
O conceito de knock back area é na verdade bem simples: criar um unit group (unit group é um grupo de unidades) e fazer knock back em todas sendo o ponto para onde elas vao, um ponto com o angulo igual Angulo entre a posição do caster e da unidade. Eu fiz a spell em mui, o qu e MUI? veja o spoiler
- Spoiler:
mui é um systema em que se cria "tabelas" de variaveis, onde uma variavel contadora aumenta cada vez que inicia a spell, criando as variaveis ex.: caster[variavel_contadora]=trigger unit, se a variavel_contadora for igual a 1, (exemplo) significa que caster[1]=trigger unit certo? ai quando iniciar denovo a spell, a variavel_contadora vai aumentar 1, criando uma variavel caster [variavel_contadora] com o valor atual, criando "tabelas" de variaveis de acordo com sua numeração, veja a dinâmica abaixo
//Certo , mas como isso vai ajudar em outra trigger??
bem, ha uma coisa que nao expliquei, é o uso de flags (que literalmente significa: bandeira, servido realmente como "bandeira", ou "sinal", nada mais do que uma variavel booleana (variavel de dois valores, true, verdadeiro, e false, falso) que tem a função de dizer se a numeraçao ta em uso, criamos essa variavel no inicio da spell (na trigger que identifica a magia lançada) coomo bandeira[contador]=true (o nome nao importa, o que importa na var é ela ser array e o index da array for do contador atual)
, veja a dinamica pra melhor copreensão
//E no caso de spell que tem tempo?
bem, neste caso, o jeito mais facil é caulando, exe.: a trigger ocorre a cada 0.03 s, vc quer qu excute por 1s, entao vc calcula 0.03 x 100 = 3s, 3/3 =1s, pronto XD, ai vc faz um if, dizendo que rodara os comandos enquanto tal variavel for menor que ((0.03x100)/3).
Última edição por Iky em 2011-11-27, 04:37, editado 19 vez(es)
Re: [TUTORIAL] Movimento de undade por trigger (knockback) || MUI extra || KB group demo map extra
- Código:
<a href="#meio">Ir para o Meio</a>
<div id="meio">Meio</div>
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 26870
Re: [TUTORIAL] Movimento de undade por trigger (knockback) || MUI extra || KB group demo map extra
isso me lembro uam vez um forum que eu deixei na minah assinatura um video do youtube no autoplay de tamanho 1x1 pixel ai ficava tipo um pontinho e tocando uma musica que ninguem sabia da onde vinha kkkkk
deixei dakele jeito uma semana só pra trola os cara
fg8d78e48sro- Número de Posts : 1073
Data de inscrição : 07/11/2011
Reputação : 63 Pontos : 25790
Re: [TUTORIAL] Movimento de undade por trigger (knockback) || MUI extra || KB group demo map extra
d.troquatte- Número de Posts : 115
Data de inscrição : 01/11/2010
Reputação : 5 Pontos : 25001
Página 2 de 2 • 1, 2
» [Tutorial] Criando Habilidades por Trigger!
» [Tutorial] Set max life por trigger.
» [Tutorial] Ganhando gold por Segundo (Trigger)
» [Tutorial]Configurando Drop Por Trigger.
TeaM KingS :: Games: :: Warcraft: World Editor :: Tutoriais: Gui, Jass, Spells, Terrain, Modelagem, Textura :: Triggers(GUI)