[Tutorial] Movimento com o Mouse

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Tutorial] Movimento com o Mouse

Mensagem por Mateus O de Andrade em Ter 15 Abr 2014, 09:13

TUTORIAL DE MOVIMENTAÇÃO COM O MOUSE
 
Versão do GM: 8.0 Pro (não testei, mas deve funcionar na Lite)
Dificuldade: Iniciante
 
 
 
 
Introdução:
Bom dia Pessoal, eu sou Mateus e este é meu primeiro tutorial, e ele trata de uma simples movimentação através do mouse.
Como eu não sou um perito em GML precisei usar alguns recursos de D&D e GML e, se alguém notar alguma melhoria para esse método, por favor, poste uma resposta.


Vamos dar inicio ao tutorial.
 
Eu elaborei este tutorial inspirado em diversos jogos que possuem aquela mecânica de colocar um marcado no alvo da movimentação e então efetuá-la.
O material que utilizaremos será:


·Dois Sprite:
Como de costume para boas práticas de programação nomeie-os de “spr_bandeira” e “spr_personagem” (sem as aspas!!).
Eu utilizei estes dois.


  


P.S.: O Sprite do personagem é meu Sprite de marcador de vida!! Hahahahaha


·Uma room:
Nome e atributos irrelevantes, apenas troque a cor do fundo para uma cor não muito berrante ou escura (um verde médio serve).
Programação:
Primeiro as partes simples:


 
CRIAÇÃO DO MARCADOR


·Crie a room e troque a cor de fundo.
 
·Após criar a room, crie dois objetos da seguinte forma:
 
Bandeira: crie usando o Sprite spr_bandeira e nomeie-o de “obj_bandeira”.
Após criar a bandeira, altere sua mascara da seguinte forma:




 
Essa é toda a mascara que iremos precisar. Aproveite o momento para trocar o Depth do obj_bandeira para “2”, assim o obj_personagen não passara por baixo do obj_bandeira. Agora deixe nosso obj_bandeira e passemos para o seguite.
 


CRIAÇÃO DO PERSONAGEM


Agora vamos a parte mais complicada:


·Crie o obj_personagem e nele coloque os seguintes eventos:
 

CREATE EVENT;
STEP EVENT;
COLISION EVENT.
 

No evento CREATE coloque um EXECUTE CODE e o seguinte código:
CREATE EVENTE

Código:
movimento=false //Essa variável ira liberar a movimentação de nosso personagem
direcao_x=0 //Estas duas variáveis irão indicar o destino de nosso personagem e seu valor é desprezível, seus argumentos serão alimentados posteriormente.
direcao_y=0



 
  
Agora no evento STEP, coloque um CHECK MOUSE e no botão utilize LEFT.
Adicione um START of a BLOCK e logo um EXECUTE CODE e dentro dele o seguinte código:
Marque Apply to Object: obj_bandeira


Código:
Instance_destroy() // Esse código é muito importante pois ele destrói um marcador em caso de um segundo click e evita que ao segurar o botão sejam criados vários marcadores.




  
Abaixo deste coloque outro EXECUTE CODE e nele o seguinte código:

Código:
if (mouse_check_button_pressed(mb_left)){
    with(obj_bandeira) instance_destroy()

if place_free(mouse_x,mouse_y){ // Esse código diz que se o local não estiver vazio, o marcador não será colocado.

movimento=true //Já este trecho libera a movimentação

direcao_x=mouse_x //Aqui estamos guardando o destino do personagem

direcao_y=mouse_y //Aqui estamos guardando o destino do personagem

instance_create(round(mouse_x),round(mouse_y),obj_bandeira)} //Agora Criamos a bandeira com as coordenadas do click do mouse.
    }
}


   

·Agora, para a movimentação do personagem, adicione um EXECUTE CODE e nele o código:



Código:
if movimento=true
{
    action_potential_step(direcao_x,direcao_y,4,0)
}


 
 
·Agora para fazer a parada do personagem, no COLISION EVENT selecione o obj_bandeira e adicione um EXECUTE CODE e nele:
 
Marque Apply to Objecct: obj_bandeira

Código:
movimento=false //Esse código fará o movimento parar
instance_destroy() //E esse destruira a bandeira após a parada





Se você fez tudo certo (contando que eu não fiz besteira ao explicar), você terá algo assim:


 


  
 
Bom pessoal espero ter agradado com isso, que é uma coisa bem simples e gostaria também de agradecer ao colega joaoneto que me inspirou a fazer esse tutorial devido ao SEU tutorial de RPG.
Valeu galera, quero fazer mais um tutorial com uma AI de inimigo que persegue o personagem em breve e adoraria ver críticas quanto a esse tutorial por favor.

Edit: Obrigado também às dicas de Fredcobain
Desculpe cara, realmente fiz com D&D pois não sabia como fazer em GML e graças a você, agora eu aprendi.


Abração pessoal e até a próxima.


Última edição por Mateus O de Andrade em Ter 15 Abr 2014, 13:00, editado 2 vez(es) (Razão : Formatação e Limpeza de código)

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Movimento com o Mouse

Mensagem por Gabreel em Ter 15 Abr 2014, 09:23

Apesar de misturar elementos de DND e GML, tutorial aprovado.

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Movimento com o Mouse

Mensagem por fredcobain em Ter 15 Abr 2014, 11:19

Para que seu tutorial seja mais polido, seria interessante converter tudo pra gml. Gostaria que vc alterasse as partes em DND. Vou te ajudar:


Agora no evento STEP, coloque um CHECK MOUSE e no botão utilize LEFT.
Adicione um START of a BLOCK e logo um EXECUTE CODE e dentro dele o seguinte código:
Marque Apply to Object: obj_bandeira



Código:
if (mouse_check_button_pressed(mb_left))
{

    with(obj_bandeira) instance_destroy()

    if place_free(mouse_x,mouse_y){ // Esse código diz que se o local não estiver vazio, o marcador não será colocado.

        movimento=true //Já este trecho libera a movimentação

        direcao_x=mouse_x //Aqui estamos guardando o destino do personagem

        direcao_y=mouse_y //Aqui estamos guardando o destino do personagem

        instance_create(round(mouse_x),round(mouse_y),obj_bandeira)} //Agora Criamos a bandeira com as coordenadas do click do mouse.
    }
}


Agora, para a movimentação do personagem, adicione um TEST EXPRESSION e no campo expression, coloque “movimento”(sem aspas).


Logo abairo um START of a BLOCK e então um STEP AVOIDING.
Nos campos x e y use respectivamente “direcao_x” e “direção_y” (nossas variáveis lá do inicio. Em speed coloque a velocidade que você quer que o personagem se mova. E em Avoid use Solid only.
E para terminar um END of a BLOCK


Código:
if (movimento)
{
    action_potential_step(direcao_x,direcao_y,4,0);
}


Outra, veja que existem alguns erros de formatação (aparecendo código html no meio do texto), se puder dar um jeito, vai melhorar a credibilidade do tuto.

Parabéns e obrigado por contribuir.

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Movimento com o Mouse

Mensagem por Mateus O de Andrade em Ter 15 Abr 2014, 13:02

Muito obrigado pelo suporte e pelas dicas Fredcobain, também já estou anotando esses códigos para poder usa-los no futuro.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Movimento com o Mouse

Mensagem por Conteúdo patrocinado Hoje à(s) 18:41


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum