Conectar-se

Esqueci minha senha

Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Últimos assuntos
» [01#PHOTOSHOP] Inicio - A interface
por Mega Arts Sab 20 Out 2012, 10:40

» [PEDIDO] Sistema de Pontos
por WillianAssis Dom 22 Jul 2012, 08:30

» [TUTORIAL] Como fazer o player voar.
por Shadow10 Sab 23 Jun 2012, 07:02

» [Link Fixo] Pong
por FabiioW Dom 03 Jun 2012, 19:51

» [Link Fixo] Super Engine
por FabiioW Dom 03 Jun 2012, 19:42

» [Novidades]
por Mega Arts Sab 12 Maio 2012, 07:53

» Obj ter x e y fixo seguindo a view
por Shadow10 Qui 10 Maio 2012, 19:29

» [Remake] Bobby Carrot 1
por Shadow10 Sab 05 Maio 2012, 09:05

» [Programa/Software]Downsligator by Shadow10
por Shadow10 Dom 09 Out 2011, 15:21

Palavras chave

Parceiros
Estatísticas
Temos 208 usuários registrados
O último usuário registrado atende pelo nome de walef

Os nossos membros postaram um total de 286 mensagens em 74 assuntos
Flux RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 


Social bookmarking

Social bookmarking Digg  Social bookmarking Delicious  Social bookmarking Reddit  Social bookmarking Stumbleupon  Social bookmarking Slashdot  Social bookmarking Yahoo  Social bookmarking Google  Social bookmarking Blinklist  Social bookmarking Blogmarks  Social bookmarking Technorati  

Conservar e compartilhar o endereço de Mega Arts em seu site de social bookmarking

Conservar e compartilhar o endereço de Mega Arts em seu site de social bookmarking


[Tutorial] Movimentação em grid

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

excla [Tutorial] Movimentação em grid

Mensagem por Chaos Theory em Sab 25 Jun 2011, 23:45

Movimentação em Grid

Versão: GM 8.
Dificuldade: Iniciante/intermediário.
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.

Bem, como não tinha nenhum tutorial sobre Game Maker eu decidi criar um sobre algo simples e útil: movimentação em grid.

Gráficos:

Decidi usar os gráficos do char básico do GM 8:





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


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.


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.


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.


Engine

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

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


Última edição por Chaos Theory em Qui 21 Jul 2011, 03:32, editado 2 vez(es)

________________

If you're 555, I'm 666.
What's it like to be a heretic?
(Heretic Anthem - Slipknot)

O que você pensa sobre mim não vai mudar quem eu sou, mas pode mudar o meu conceito sobre você. (Dr.House)

Egines de minha autoria
4shared.com/folder/l4Wngaua/


Projetos atuais
Sequência de aulas sobre GML básico
Spoiler:
  • Aula 0.0 - Introdução as aulas, princípios da GML e lógica de programação.
  • Aula 1.0 - Conceito de variáveis, tipos de variáveis na GML, declaração de variáveis na GML e checando variáveis locais no modo debug.
  • Aula 1.1 - Expressões aritméticas com variáveis reais e inequações com booleanas (sem previsão).


Programando um software para cálculos na área de mecânica clássica.
avatar
Chaos Theory
Avaliador
Avaliador

Mensagens : 30
Idade : 22
Emprego/lazer : Cinéfilo, escritor e amante de exatas.
Humor : Sarcástico.

http://cantofilosofico.tumblr.com

Voltar ao Topo Ir em baixo

excla Re: [Tutorial] Movimentação em grid

Mensagem por Mega Arts em Dom 26 Jun 2011, 10:40

Nossa,muito simples,vai ajudar bastante,obrigado por contribuir
avatar
Mega Arts
Administradores
Administradores

Mensagens : 151
Idade : 18
Emprego/lazer : Game Maker - Forum Mega Arts
Humor : Perfeito

http://megarts.forumeiros.com

Voltar ao Topo Ir em baixo

excla Re: [Tutorial] Movimentação em grid

Mensagem por Shadow10 em Dom 26 Jun 2011, 22:07

Eu ainda não testei com colisão, mas pelo que eu testei deu pra perceber que ta perfeito esse seu sistema de movimentos.
Valeu!

________________



Deus da asas a quem não sabe voar, pois os que sabem, não precisam.
Play yourself!
avatar
Shadow10
Administradores
Administradores

Mensagens : 78
Idade : 33
Humor : agora eu to bonzinho

Voltar ao Topo Ir em baixo

excla Re: [Tutorial] Movimentação em grid

Mensagem por Mega Arts em Seg 27 Jun 2011, 08:42

o incrivel que não é tipo aquelas top down
tipo :
Código:
if keyboard_check (vk_up) y-=3
ou
Código:
if keyboard_check_pressed (vk_up) y-=3
legal a movimentação,só que não é tão iniciante,pois os codigos não são faceis,hora que li eles me assustei,mas ja aprendi eles
avatar
Mega Arts
Administradores
Administradores

Mensagens : 151
Idade : 18
Emprego/lazer : Game Maker - Forum Mega Arts
Humor : Perfeito

http://megarts.forumeiros.com

Voltar ao Topo Ir em baixo

excla Re: [Tutorial] Movimentação em grid

Mensagem por Chaos Theory em Seg 27 Jun 2011, 18:53

Shadow10 escreveu:Eu ainda não testei com colisão, mas pelo que eu testei deu pra perceber que ta perfeito esse seu sistema de movimentos.
Valeu!
Eu chamaria o sistema de movimento do tutorial de um "esqueleto estável", pois dentro da movimentação em si não apresenta falha aparentes, pelo menos nas aplicações que fiz com ele. Contudo se tentar aderir certas funções a ele, pode ocorrer certos erros. Para colisões creio que um código que unido a alguns cálculos básico que funcionaria bem seria: move_snap(). Com mais tempo eu crio um tutorial explicando melhor esse sistema de movimento, entrando em assuntos como colisão por exemplo.

Need_90 escreveu:o incrivel que não é tipo aquelas top down
tipo :
Código:
if keyboard_check (vk_up) y-=3

ou
Código:
if keyboard_check_pressed (vk_up) y-=3

legal a movimentação,só que não é tão iniciante,pois os codigos não são faceis,hora que li eles me assustei,mas ja aprendi eles

O objetivo de um movimento em grid é fazer o objeto correr certo espaço em certo tempo de forma padrão e precisa, então o motion_set() se encaixa melhor que usar as variáveis x e y. Eu avaliei o tutorial visando seu sistema como um todo, algo que não se mostro complexo, então creio que se encaixa em iniciante. Com seu comentário acho que realmente os códigos e a forma de programação podem tornar o sistema mais complexo devido a sua simplificação, então mudarei o nível para iniciante/mediano.

Vlw pelos comentários e espero ter feito realmente uma boa contribuição para o fórum.

________________

If you're 555, I'm 666.
What's it like to be a heretic?
(Heretic Anthem - Slipknot)

O que você pensa sobre mim não vai mudar quem eu sou, mas pode mudar o meu conceito sobre você. (Dr.House)

Egines de minha autoria
4shared.com/folder/l4Wngaua/


Projetos atuais
Sequência de aulas sobre GML básico
Spoiler:
  • Aula 0.0 - Introdução as aulas, princípios da GML e lógica de programação.
  • Aula 1.0 - Conceito de variáveis, tipos de variáveis na GML, declaração de variáveis na GML e checando variáveis locais no modo debug.
  • Aula 1.1 - Expressões aritméticas com variáveis reais e inequações com booleanas (sem previsão).


Programando um software para cálculos na área de mecânica clássica.
avatar
Chaos Theory
Avaliador
Avaliador

Mensagens : 30
Idade : 22
Emprego/lazer : Cinéfilo, escritor e amante de exatas.
Humor : Sarcástico.

http://cantofilosofico.tumblr.com

Voltar ao Topo Ir em baixo

excla Re: [Tutorial] Movimentação em grid

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

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


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