[Tuto p/ Iniciante] Usando Direction no Game Maker

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

[Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por dharrison em Sab 19 Abr 2014, 22:01

Título: Usando Directions no Game Maker
Versão do GM: Qualquer
Dificuldade: Fácil
Link para download da Engine: Não tem engine, mas tem uma demonstração prática que pode ser usada como consulta.
Requer Extensões: Não.
Requer DLLs: Não.
Tags: direction, mover, direções, gml.

Eai galera tudo blz?
Venho trazer hoje um tutorial super básico, mas que eu criei pois senti dúvidas na hora de utilizar a variável direction.

Existem diversas variáveis e funções que dependem da variável direction no Game Maker, que é a variável que aponta a direção em graus na qual um objeto se movimenta.

Tudo é basicamente um conceito, então sejamos práticos. Abaixo você poderá visualizar algumas imagens que indicam as direções.

(censurei a bunda feia do personagem Razz)

Os números informados na imagem acima são as direções em graus da forma que o GM utiliza. Ou seja, começando pela Direita 0° e seguindo em sentido anti-horário até chegar em (quase) Direita 359°.

360° não existe pois 360° e 0° são a mesma coisa.

Um exemplo de como usar essa variável é definir o movimento do char da seguinte forma:
Dentro do Event KEYBOARD RIGHT:
Código:
//Direita
{direction=0;speed=4}

Dentro do Event KEYBOARD UP:
Código:
//Cima
{direction=90;speed=4}

Dentro do Event KEYBOARD LEFT:
Código:
//Esquerda
{direction=180;speed=4}

Dentro do Event KEYBOARD DOWN:
Código:
//Baixo
{direction=270;speed=4}

O bom de ser usar direction é que a movimentação não fica limitada a 4 ou 8 direções.


Bom pessoal acho que é isso, um tuto bem breve explicativo sobre direction para você não se confundir como eu.
A demonstração pode ser usar usada para consultar uma das 8 direções mais usadas, assim como esse tópico.

Grande Abraço a todos


Última edição por dharrison em Sab 19 Abr 2014, 23:11, editado 1 vez(es)

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por fredcobain em Sab 19 Abr 2014, 22:22

Simples, bem escrito e efetivo.
Direto ao ponto.
Aprovadíssimo.

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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Thyago em Sab 19 Abr 2014, 22:30

.Bom para iniciantes,apesar de preferir colocar tudo em step,o engraçado é a tarja preta no desenho kkkkkk.
 .Mas você fez um exemplo no desenho com 8 e apenas 4 nos código.

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Gabreel em Sab 19 Abr 2014, 23:03

Só duas coisa Haris, dá pra trocar os speed por:
Código:

x += cos(direction*pi/180) * 4;
y -= sin(direction*pi/180) * 4;

Aí você terá uma flexibilidade gigante sobre o código e colisões!

E você em vez de direction colocou diretion!

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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por dharrison em Sab 19 Abr 2014, 23:12

Gabreel escreveu:Só duas coisa Haris, dá pra trocar os speed por:
Código:

x += cos(direction*pi/180) * 4;
y -= sin(direction*pi/180) * 4;

Aí você terá uma flexibilidade gigante sobre o código e colisões!

E você em vez de direction colocou diretion!

Vlw Gabreel, corrigi o erro Happy
Mas explica melhor como funciona isso ae, fasfavortio sorrindo

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Thyago em Sab 19 Abr 2014, 23:13

Gabreel escreveu:Só duas coisa Haris, dá pra trocar os speed por:
Código:

x += cos(direction*pi/180) * 4;
y -= sin(direction*pi/180) * 4;

Aí você terá uma flexibilidade gigante sobre o código e colisões!

E você em vez de direction colocou diretion!
  .Nesse caso o 4 representa a velocidade,como é para iniciantes talves usar cos e sin seja um pouco mais complicado e acho pior para checar a velocidade.

Código:
x += cos(direction*pi/180) *4    =    x+=lengthdir_x(4,direction)

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Gabreel em Sab 19 Abr 2014, 23:19

Acho que trigonometria é meio que obrigatoriedade na nossa área, e não algo de iniciante de usuários avançados, de qualquer forma, sua dica também é boa.

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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Thyago em Sab 19 Abr 2014, 23:26

.O engraça é que quando  comecei no game maker e conhecia poucas funções criava tudo na matematica.

point_distance,lengthdir entre outros não usava nada disso

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Gabreel em Dom 20 Abr 2014, 00:02

dharrison escreveu:
Gabreel escreveu:Só duas coisa Haris, dá pra trocar os speed por:
Código:

x += cos(direction*pi/180) * 4;
y -= sin(direction*pi/180) * 4;

Aí você terá uma flexibilidade gigante sobre o código e colisões!

E você em vez de direction colocou diretion!

Vlw Gabreel, corrigi o erro Happy
Mas explica melhor como funciona isso ae, fasfavortio sorrindo
Não tinha visto, hehehe
Basicamente, em x, você tem um período entre pi (quando a direção é 180) até pi/180 (quando a direção é 0), que correspondem um período de -1 até (quanto mais casas decimais em pi, mais próximo de) 1 quando (e uma parábola pra cima entre eles) dentro de cos. 

E em y, você tem o mesmo período entre pi e pi/180 e um período de 0 à (quanto mais casas decimais em pi, mais próximo de) 0 (com uma parábola para cima entre eles). 

E obviamente cos e sen estão diretamente conectados. Vou dar dois exemplos bem básicos:
Quando a direção é 0 (vai horizontalmente pra frente), o cos(pi/180)*4 = 4 e sen(pi/180)*4 = 0.
Quando a direção é 45 (ele vai para a diagonal para cima e para frente, conforme o teu esquema), então, sen(45*pi/180)*4 = cos(45*pi/180)*4 =~ 2,82. Se você fazer a mesma coisa com speed, vai confirmar.

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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por theguitarmester em Dom 20 Abr 2014, 12:37

Achei o tutorial bem pequeno, porém cumpre o prometido e é explicado, não falhando em, seu objetivo.


Mas uma coisa que tenho curiosidade sobre direction(direção, vetor):
Como se calcula a direção de 2 pontos, isto é, qual é o algorítmico por trás desta função:
point_direction(x1, y1, x2, y2)

Eu sei que a distância entre dois pontos é:
Raiz Quadrada de (x1-x2)² + (y1-y2)²


Mas já procurei e procurei mas não achei o da direção.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por dharrison em Dom 20 Abr 2014, 12:52

quando vc usa point_direction x1 e y1 é o ponto de origem, e x2 e y2 é o segundo ponto, isso cria uma linha.
O GM pega essa linha e retorna o angulo dela em graus.

eu não manjo muito  scratch 

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Gabreel em Seg 21 Abr 2014, 04:26

theguitarmester escreveu:Achei o tutorial bem pequeno, porém cumpre o prometido e é explicado, não falhando em, seu objetivo.


Mas uma coisa que tenho curiosidade sobre direction(direção, vetor):
Como se calcula a direção de 2 pontos, isto é, qual é o algorítmico por trás desta função:
point_direction(x1, y1, x2, y2)

Eu sei que a distância entre dois pontos é:
Raiz Quadrada de (x1-x2)² + (y1-y2)²


Mas já procurei e procurei mas não achei o da direção.
Bom, se for o que eu estou pensando, é simples, pense assim: 


A tangente disso é (y2 - y1) / (x2 - x1), e a função contrária (isto é, a tangente é a transformação de algum ângulo para tangente (dãã), precisamos da função que faz o contrário) é a cotangente.


Então point_direction(x1, y1, x2, y2) = cotg((y2 - y1) / (x2 – x1))

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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por PedroX em Seg 21 Abr 2014, 12:05

Só olhar o item 7: http://gmbr.forumeiros.com/t17425-scriptscripts-matematicos

Falando sobre o tutorial, está muito bom.
Talvez possa acrescentar que hspeed e vspeed dependem também (embora esteja implicito no tutorial):

Código:
direction = 90;
speed = 5;

Automaticamente, hspeed será 0 e vspeed será 5.

Código:
direction = 60;
speed = 10;

Automaticamente, hspeed=5, vspeed=8.66.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por polosam em Seg 21 Abr 2014, 13:02

...E o mesmo quando inverso. Se declararmos que hspeed=[maior que 0] com vspeed nula, automaticamente a direction é retornada pra nós, nesse caso, 0.

 Eu queria que vocês dessem uma olhada no meu carrinho:
http://www.4shared.com/file/b2jOqkeDce/CARRINHO_ISOMTRICO_BY_POLOSAM.html
 Eu atribuí um monte de subdivisões para os "ângulos de pontos cardeais" que vocês citaram, com pelo menos umas 20 subimages (que ainda aproveito dobrando elas por image_xscale=-1)!
 
 Baixei um model de domínio público de uma ferrari 3d (ou lamborguini, sei lá) e rotacionei ela no studiomax, capturando um monte de PNGs. Já que eu não fui o modelador dela, não há porque reter isso. Compartilho com quem quiser levar a engine adiante!  tongue

polosam

Número de Mensagens : 424
Idade : 24
Data de inscrição : 20/12/2010
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: [Tuto p/ Iniciante] Usando Direction no Game Maker

Mensagem por Conteúdo patrocinado Hoje à(s) 00:31


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