Versão: Game Maker: Studio(Pro)
Nível: Intermediário
Imagens:
Sobre: Esse é um exemplo que mostra como fazer para descobrir a trajetória de um projétil antes mesmo dele ser arremessado, e desenhar a sua possível trajetória na tela para que o jogador decida o melhor momento de apertar o gatilho. Isso é muito útil em jogos de arremesso como Angry Birds, jogos de basquete, arco e flecha, etc...
Scripting API: O exemplo tem apenas dois scripts bem simples e que só precisa passar alguns parâmetros.
calculateTrajectory(startPosition X, startPosition Y, startSpeed X, startSpeed Y, Gravity X, Gravity Y, stepSize, n )
Calcula a trajetória do projétil e desenha os passos(pontos) de acordo com os parâmetros passados. Deve ser usado dentro de um "loop for".
getPower(startPos X, startPos Y, target X, target Y, power)
Calcula a força de saída proporcional necessária para que o projétil seja arremessado corretamente na direção do alvo(target).
Como funciona: Eu criei esse exemplo baseado nesse artigo aqui, então para quem quer entender melhor o funcionamento, eu aconselho a leitura.
Somente me baseando pelo artigo eu não consegui fazer o que queria, que era fazer o projétil ser disparado corretamente na direção do mouse para que coincidisse com a direção que o canhão está apontando. As equações do artigo funcionaram perfeitamente, mas os valores da velocidade de partida do projétil tinham que ser definidas manualmente e é preciso usar valores diferentes para cada direção. Para contornar esse problema eu criei o script getPower() que calcula proporcionalmente a velocidade necessária de X e Y para que faça o projétil ir corretamente em determinada direção, pois os valores de X e Y variam individualmente dependendo da direção que se deseja arremessar o projétil.
Controles:
Left Mouse: Cria o projétil.
Mouse Wheel: Aumenta e diminui a força do arremesso.
TESTE NO NAVEGADOR
DOWNLOAD LINK