Este tutorial tem como objetivo ensinar como criar projéteis em jogos de tiro com vista superior (Top-Down Shooter) de uma maneira simples. Para tal, faremos uso principalmente das funções lengthdir_x e lengthdir_y.
A grande diferença entre simplesmente criar um projétil, como visto no Tutorial de Como Criar Projéteis, e criar projéteis para jogos Top-Down Shooter é que sprite de personagem muda de acordo com o ângulo entre a posição do mouse e do personagem, portanto a origem do tiro deve acompanhar essa rotação e também obedecer o tamanho da arma.
Para isso utilizaremos as funções lengthdir_x e lengthdir_y, que são basicamente a projeção de uma reta nos eixos x e y. As funções completas são: lengthdir_x(n, m) e lengthdir_y(n, m), sendo n e m, respectivamente, o tamanho desta reta e sua direção. Para quem está familiarizado com trigonometria, lengthdir_x dará o valor da projeção da hipotenusa em x e lengthdir_y o valor da projeção em y.
Exemplo:
Create Event:
raio = 100
Step Event:
image_angle = point_direction(x, y, mouse_x, mouse_y)
if mouse_check_button_pressed(mb_left)
{
instance_create(x + lengthdir_x(raio, image_angle), y + lengthdir_y(raio, image_angle), obj_projetil)
}
Esse código altera a localização onde o projétil será criado. Para saber como o obj_projetil deve estar programado veja o Tutorial sobre Projéteis.
Em Create Event definimos a distância entre a origem do sprite do jogador e a ponta da arma. Em Step Event fazemos com que o sprite do jogador rotacione de acordo com a posição do mouse, como explicado na parte de rotação do Tutorial sobre Sprites, e definimos que o Projétil será criado de acordo essa angulação toda vez que clicarmos com o botão esquerdo do mouse. Portanto, seguindo este exemplo, caso atirássemos para cima, lengthdir_x seria igual a 0 e lengthdir_y igual a -100 (pois no Game Maker o eixo y é negativo para cima).
O valor para "raio" utilizado neste código é apenas um exemplo, pois será necessário fazer com que esse valor dependa da arma utilizada, já que cada uma tem seu próprio tamanho.
Nenhum comentário :
Postar um comentário