Movimento Limpo
Chega de Bugar!
Plataforma: GM8.0 (Funciona no lite SE o objeto "o_professor" não estiver na room)
Dificuldade de utilização: Fácil
Autor: Michael Willy
Introdução:
Uma coisa que sem duvida incomoda muita gente que usa o
Game Maker, é a dificuldade em fazer uma colisão decente com um objeto. Quantas vezes não nos deparamos com objetos grudando na parede, batendo de forma errada no teto, ou até ficando preso em quinas?
Este problema acontece principalmente com quem gosta de usar o sistema padrão do GM, que é hspeed, vspeed, gravity e friction. Um dos métodos alternativos seria mover-se alterando diretamente o valor de x ou de y, mas dessa forma, não poderíamos usar friction, que muitas vezes é essencial em um jogo. Mas, com a engine “Movimento Limpo”, os dias destes problemas estão contados!
Proposta:
A engine conta com quatro scripts, scr_hspeed, scr_vspeed, scr_gravity e scr_friction.
Com estes scripts, é possível reproduzir os mesmos comandos do GM, porém, com a garantia de uma colisão perfeita, independente da velocidade que esteja movendo-se.
Ao executar a engine, você terá um guia, mostrando o potencial da engine.
Como usar o scr_hspeed e o scr_vspeed: Clique para ver o conteúdo
Como usar o scr_hspeed e o scr_vspeed
Função
Fazer um movimento com uma colisão perfeita, independente da velocidade que o objeto esteja se movendo, seja em números inteiros ou fracionários.
Argumentos
O script lida com três argumentos, velocidade (arg0), opção (arg1) e objeto (arg2).
“Velocidade” (argument0) é a velocidade na qual o objeto que chamou o script deve se mover. Para o scr_hspeed, números positivos (inteiros ou fracionários) fazem o objeto mover-se à direita, números negativos, à esquerda. Para o scr_vspeed, números positivos (inteiros ou fracionários) fazem o objeto mover-se para baixo, números negativos, para cima.
“Opção” (argument1) é usado opcionalmente. Neste argumento, deve-se escolher uma das três opções abaixo:
0 – Colisão com apenas objetos sólidos.
1 – Colisão com apenas um objeto especifico, seja sólido ou não.
2 – Colisão com qualquer objeto sólido e/ou com um objeto especifico.
Importante:
• Se a opção desejada for a zero, você pode chamar o script passando apenas o argument0 (velocidade), mas você pode colocar a opção zero se desejar. Ex.: scr_hspeed(4);
• Se a opção desejada for a um, você deve colocar o terceiro argumento. Caso contrário, o script será anulado, pois seu objeto vai se mover, mas não vai parar em obstáculos, a menos que a opção seja a dois, pois ele vai parar apenas em objetos sólidos.
• Se a opção escolhida for inexistente, a padrão (zero) será selecionada.
“Objeto” (argument2) é o nome (ou id) do objeto (sólido ou não) que o script deve considerar como obstáculo para fazer o objeto que chamou o script parar. Este argumento só deve ser colocado apenas se o argument1 for 1 ou 2. Caso seja zero, este argumento simplesmente será ignorado e inutilizado.
Note que o script retorna true quando consegue se mover e false quando não consegue.
Controles:
-“Setas” movimentam.
-“Enter” fala com o guia.
Imagens:
Download Versão 2.0:
(Agradecimentos especiais a
PedroX. Agora, é possível mover-se em 360 direções com a colisão perfeita!)
Toda a engine foi criada e desenvolvida por mim, Michael Willy e seu conteúdo podem ser usados livremente. Créditos não são necessários, mas apreciados.
Créditos para Matheus Reis pela versão de meu avatar no fórum (spr_willy).
Créditos para Pedrox pelo scr_speed();
Em caso de dúvidas, críticas, sugestões ou elogios, deixe um comentário no fórum.
Para mais engines, tutoriais e projetos open-source, acesse:
http://www.willy-gmbr.blogspot.com
Michael Willy - 15/08/2013