domingo, 11 de maio de 2008

Emanuele Feronato Traduzido - Parte 1

E esse é o hyper-mega-ultra-super-master-headshoting post que eu prometi! Para quem não sabe o que é Emanuele Feronato , eu digo que é o melhor e mais completo guia de criação de jogos em flash. O único problema que separa possíveis developers brasileiros de seus tão sonhados jogos em flash é o fato de este tutorial estar em inglês! Agora , este problema está resolvido! Bem , vamos direto ao post , mas antes , algumas observações IMPORTANTES:

1 - As variáveis não foram traduzidas para que ningém confundisse com a que o site mostra.

2 - É extremamente recomendável que você leia esta tradução com a janela do original aberta ( link: http://www.emanueleferonato.com/2006/10/29/flash-game-creation-tutorial-part-1/ ), pois não há como eu colocar aqui as janelas de código e os exemplos em flash de lá , então , colocarei [código] ou [flash] onde deveriam estar no site original.

3 - Este post requer noções básicas de AS2 ou AS3. Então , daqui a pouco colocarei umas noções basicas aqui =P

4 - Para deixar as coisas ainda mais fácil , baixe o flash 8 antes de ler este guia , e vá praticando conforme você lê. É bem melhor!

Agora , o que todos esperavam:

Este é um tutorial bem longo , então decidi quebrá-lo em partes. Começou como um exemplo didático sobre criação de jogos em flash.

Antes de tudo , eu me inspirei numa série chamada Balls Revamped (Não me lembro o link , jogue no google), mas adicionarei mais coisas . Quero dizer , mais umas... duas.

Vamos começar criando o personagem principal.

O hero

Ok , eu disse que vamos criar uma bola , nosso hero

Então , por enquanto , nosso hero vai ser uma bola vermelha com uma bola amarela por dentro. Parece bom! Talvez você devesse imprimir e botar na parede do seu quarto.

Primeiramente, vamos pensar sobre nossa interação com o hero. Basicamente , quero que ele se mecha quando eu apertar um botão.

Ele irá para a esquerda quando eu apertar a seta esquerda , direita se eu apertar a direita , e por ai vai.

Então , o primeiro actionscript será:

[código]

É fácil , não é?

O evento enterFrame simplesmente checa se o botão é apertado , e aumenta ou diminui a posição x ou y do hero de acordo com o botão apertado.( Nota do Melloras: lembre-se dos planos cartesianos da oitava série! )

Clique no flash abaixo e aperte as setas para mover o hero. Aperte Reset para...hum...recomeçar o flash.

[flash]

O Power

Bem , você perceberá que nosso herói se move com uma velocidade fixa.

Eu quero criar uma variável que tome conta da velocidade , então se eu quiser que o hero se mova mais rápido ou mais devagar , eu apenas mudo um valor.
Isso é muito importante , já que vou trabalhar em diversas fases onde a velocidade do hero pode variar.

Vou colocar uma variável ''power'' para mover o hero mais rápido ou mais devagar.

[código]

Agora você pode mudar a velocidade do hero ajustando a variável''power''
Quanto maios o valor de ''power'' , mas rápido o movimento.

[flash]

A velocidade

isso é um pouco mais que antes , mas nosso heróis sempre se move na mesma velocidade , sempre começa parado.

Agora preciso de algum tipo de aceleração, e também de algum velocidade inicial ( Nota do Mellora: speed=velocidade , a velocidade do objeto )

[código]

Perceba como eu reduzi o power do exemplo anterior ( 3 ) e deste ( 0.2 ).
Agora que o power aumenta a velocidade, preciso lidar com as variáveis com muito cuidado , ou o movimento ficará muito rápido.
Eu tenho os valores yspeed e um xspeed começando do zero , mas posso mudá-las para fazer o hero se mover quando ele entrar no frame.

Agora , quanto mais tempo você apertar o botão , mais velocidade o hero ganha , e é mais difícil mudar de direção.

Bom.

[flash]

A Fricção

Agora eu quero friction , porque não quero que o hero se mova para sempre se eu não estiver apertando nada.
Eu quero que o hero pare de se mover lentamente quando eu não estiver apertando nada.

[código]

Então eu coloquei um friction , menor que 1 , que vai afetar a velocidade do hero. Agora , quando aperto um botão , hero se move , mas quando solto , ele para lentamente. Lentamente quanto? Quanto maior a friction ( sempre menor que 1 , não se esqueça ) mais lentamente o hero vai diminuir de velocidade.

[flash]

A Gravidade

Eu disse que queria fazer algo parecido com Balls Revamped, então eu preciso de gravity. O hero vai cair dependendo da força da gravity.

[código]

Então , nos movimento verticais , eu troquei a friction pelo gravity. Se eu não apertar o botão UP ( seta para cima ) , o hero cairá. Enquanto você está lendo isso , provavelmente o hero já caiu da janela flash abaixo ( você verá como prevenir isto mais tarde no tutorial ), então , você precisa clicar em Reset para colocar o hero no centro do flash.

[flash]

A Pressão

Se eu tenho gravidade , eu quero thrust. Eu quero que seja mais complicado de se mover para cima , já que meu herói está vivendo num mundo em que a graidade existe.

[código]

Como você pode ver , a thrust ( de novo , menor que 1 ) afeta o movimento para cima , deixando-o mais fraco e mais difícil de se realizar.

[flash]

O Vento

O que usaremos agora? É claro , o vento!
Eu quero fazer uma fase parecer que está com muito vento. Você sabe , a vida de um herói ( hero ) é complicada , então é isso!

[código]

O vento afeta os movimento laterais, se positivo , o hero se moverá para a direita , e negativo , para a esquerda.
Use todas essas variáveis sabiamente para achar a mistura perfeita de realismo e jogabilidade.

[flash]

A Rotação

Agora , o toque final. Assim como em Balls Revamped , eu quero que o hero gire em sentido horário quando indo pra direita , e em sentido anti-horário quando indo pra esquerda. ( Nota do Mellora: com o código _rotation += yspeed; , você pode criar rotação quando se movendo verticalmente , mas acredite , não fica tão bom assim ¬¬ )

[código]

É fácil , só preciso colocar que a rotação do hero é igual a sua xspeed

E a parte 1 termina por aqui

Comentário do Mellora: prepare os nervos , pois a parte 2 trata da coisa monstruosa e cruel que é o hit test!

Nenhum comentário: