GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Movimento em Grid

2 participantes

Ir para baixo

Movimento em Grid Empty Movimento em Grid

Mensagem por Chaos Theory Sáb 16 Jul 2011, 00:44

Movimentação em Grid

Versão: GM 8.
Dificuldade: Iniciante.
Assunto: Movimentação respeitando uma grid.
Aplicação: Muitos estilos de jogos necessitam de uma movimentação mais precisa tanto para tornar a jogabilidade melhor quanto para poder tornar certos sistemas possíveis.

Gráficos:

Decidi usar os gráficos do char básico do GM 8:
Movimento em Grid Explorerupstrip8
Movimento em Grid Explorerrightstrip8
Movimento em Grid Explorerleftstrip8
Movimento em Grid Explorerdownstrip8

Para deixar o projeto um pouco mais apresentável, usei como background o gráfico:
Movimento em Grid Plants

Scripts

move
Primeiro vamos carregar em variáveis aquilo que é necessário para o funcionamento do script:
Código:
g_dir = c_dir;
g_esq = c_esq;
g_cima = c_cima;
g_baixo = c_baixo;
   
m_dir = keyboard_check(vk_right);
m_esq = keyboard_check(vk_left);
m_cima = keyboard_check(vk_up);
m_baixo = keyboard_check(vk_down);
   
vlc = 4;
   
pos = place_snapped(32,32);
Nessa parte do script definimos: gráficos do char (1º grupo), teclas de movimento (2º grupo), velocidade de movimento e parâmetros de largura e altura da grid. Todas as funções aderem a variável um valor de 0 ou 1 para poderão ser analisadas nas condicionais de forma mais resumida, exemplificando o código.

Agora fazemos uso das variáveis anteriormente definidas nas duas estruturas condicionais "if" principais:
Código:
if(pos and !(m_dir or m_cima or m_esq or m_baixo)){
        vspeed = 0;
        hspeed = 0;
        image_speed = 0;
        image_index = 0; } else { image_speed = vlc/10; }
   
    if(pos){
        if(m_dir  ){ motion_set(000,vlc); sprite_index = g_dir  ; }
        if(m_cima ){ motion_set(090,vlc); sprite_index = g_cima ; }
        if(m_esq  ){ motion_set(180,vlc); sprite_index = g_esq  ; }
        if(m_baixo){ motion_set(270,vlc); sprite_index = g_baixo; }}
O objetivo da grid é definir um movimento padrão para o character cobrindo determinado espaço em determinado tempo. Nesse caso, na primeira estrutura conferimos se objeto do char está enquadrado (pos) juntamente com a inutilização de todas as teclas de movimento (m_dir or m_cima or m_esq or m_baixo). O sinal "!" equivale a um not. Se tudo confere na primeira condicional, o objeto é parado (vspeed e hspeed) e o gráfico do char passa a ser o 0, que de forma padrão é o gráfico do char parado.

A segunda condicional gera o movimento conforme a tecla pressionada conferindo o enquadramento, o que impede o aumento excessivo de velocidade de movimento ou quebra do enquadramento. Nas subcondiconais é executado o movimento por motion_set que torna o trabalho mais simples juntamente com a troca de gráfico do char que recebe vida com o else da primeira condicional principal.

Objetos

obj_char
Defina o gráfico dele como quiser e em seu evento step execute o script move.
Movimento em Grid Grid32x32room

Rooms

room0
Posicione o objeto obj_char de forma que ele fique enquadrado em 32x32 pixels, caso contrário o script não surgirá efeito.
Movimento em Grid Grid32x32room

Execute!

Agora o seu personagem se move de forma padrão numa grade 32x32 pixels. Futuramente criarei outros tutoriais que usarão esse tipo de movimento em pro de outras funções para mostrar melhor sua funcionalidade.
Movimento em Grid Grid32x32room

Engine

Para aqueles que quiserem, segue o link para download da engine desse tutorial:
http://www.4shared.com/file/5_O4mqF5/movimentao_em_grid.html

Espero que tenham gostado do tutorial. Qualquer dúvida, estamos aí.
Chaos Theory
Chaos Theory

Data de inscrição : 24/06/2011
Reputação : 0
Número de Mensagens : 9
Prêmios : Movimento em Grid Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Movimento em Grid Empty Re: Movimento em Grid

Mensagem por Ufrarion Qua 03 Ago 2011, 04:57

Ficou perfeito esse tuto! muito bem explicado e formatado continue assim!

Obs: Tu podia botar pelo menos uma indicação de tutorial de como dividir a imagem o char, ja que o tuto e direcionado aos iniciante
Ufrarion
Ufrarion

Data de inscrição : 06/06/2010
Reputação : 3
Número de Mensagens : 222
Prêmios : Movimento em Grid Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos