Vamos a um tutorial que vai ensinar um pouco de matemática aplicada ao mundo da criação de games em flash.
Pré-requisitos:
Macromedia Flash CS3
Objetivo:
O objetivo principal é que você entenda teoria envolvida aplicada à prática, não adianta você sair copiando e colando código daqui e não entender nada do que o código faz. Não só a pegunta é como fazer deve ser respondida, mas também por que funciona. Recomendo que não pule a parte teórica deste tutorial, pois é basicamente a explicação do código, demonstrando que ele realmente funciona e tem embasamento teórico da nossa querida matemática:
Conceitos:
Os conceitos que serão abordados são basicamente a utilização de Action Script 3.0 aliado à trigonometria, para montar um exemplo simples de movimentação que pode ser a chave para a criação de games de tanque de guerra por exemplo, que atira e gira para todos os lados com seu canhão. Existem diversos joguinhos na Internet que usam este conceito.
Conteúdo
Figura 1 – Posicionamento correto
Finalizado o Canhão, agora chega o momento de pensar como fazer a mira do canhão ficar seguindo o cursor do mouse. Será usada a trigonometria para fazer isso, você pode não lembrar de alguma coisa de trigonometria e querer pular esta parte, mas lá vai a exeplicação para não ter desculpa. Na figura 2 e 3 o ponto P indicado pode ser interpretado como o cursor do mouse e o ponto O como o centro do canhão. A diferença entre o ponto X do mouse menos o X do canhão é cosseno de alpha e a diferença entre o ponto Y do mouse menos o Y do canhão é o seno do ângulo alpha, esse ângulo alpha que precisamos para calcular a rotação do canhão usando a função tangente:
Figura 2 – Seno e cosseno. Fonte: http://www.brasilescola.com
Figura 3 – Tangente. Fonte: http://www.brasilescola.com
Figura 4 – Linkage.
- /*Instância do canhão*/
- var cannon_mc = new Cannon();
- /*Será utilizado para posicionar o canhão*/
- var dobj:DisplayObject = null;
- /*adiciona o canhão ao palco e faz o correto posicionamento*/
- dobj = addChild(cannon_mc);
- dobj.x = 250;
- dobj.y = 200;
- dobj.width = 120;
- dobj.height = 80;
- /*adiciona evento de movimentação de mouse*/
- parent.addEventListener(MouseEvent.MOUSE_MOVE, rotate);
- function rotate(evt:MouseEvent):void
- {
- /*Calcula o vetor em X (cosseno)(Ver figura 1)*/
- var mousex = evt.stageX-cannon_mc.x;
- /*Calcula o vetor em Y (seno)(Ver figura 1)
- * Multiplica por -1, coordenadas de vídeo para
- * coordenadas reais
- */
- var mousey = (evt.stageY-cannon_mc.y)*-1;
- /*Calcula a tangente*/
- var angle = Math.atan2(mousey, mousex);
- /*rotaciona, tranformando o angulo de radianos para graus
- * Pura matemática =)
- */
- cannon_mc.rotation = -angle*180/Math.PI;
- }
Considerações Finais
Agora é só rodar e ver o resultado, esse conceito tem uma infinidade de aplicações, tudo depende da sua criatividade. Aprofundei apenas nos conceitos chaves, saber o que é um vetor ou o que é plano cartesiano fica um estudo a seu critério. Recomendo um estudo nos conceitos de trigonometria para que seus joguinhos fiquem cada vez mais legais e viciantes.
Nas próximas colunas abordarei mais conceitos matemáticos. Fazer um jogo de tabuleiro é fácil, agora fazer um que envolva física e matemática demanda um pouco mais de empenho de quem o faz, e consequentemente isso trará um impacto positivo para seus jogos. Do que seria os jogos de hoje, como Crysis ou Need For Speed Pro Street, sem a Matemática e a Física, os seus criadores possuem um intenso conhecimento sobre ambas áreas de conhecimento, não são meros programadores.
Espero que tenham gostado. Até a próxima.
Nenhum comentário:
Postar um comentário