[Resolvido]Movimento/troca de sprites estilo zelda nes

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

[Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por jailson_dante em Ter 09 Jun 2015, 11:01

Olá pessoal do GM brasil! Estou aki mais uma vez para pedir um auxilio.
Eu estou fazendo um jogo estilo the legendo of zelda a link to the past, alguem ja jogol?
Bem, eu queria fezer os movimentos com as setas e mudando de sprites, até ai eu sei fazer mas uma coisa que eu percebi é q link tipo trava a direção que esta olhando quando pressiono duas teclas, tipo, quando ando pra direita e aperto para cima segurando o botão direito ele ainda continua olhando para a direita... e daí vai...
eu queria uma base de como faço isso em condigo. Desde já agradeço.

jailson_dante

Número de Mensagens : 11
Data de inscrição : 10/11/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Superbomber em Ter 09 Jun 2015, 11:12

'-'-'-'-'-'-'-'. Isso é um bug cara, '-'-'-'-'-'-'-''-
Quer refazer um bug pq? '-'-'-'-'-'-'-'-'-'-'
Bom, mas esse é o mais comum dos bugs. Só fazer algo assim que você consegue repeti-lo:
'-'
Código:

if(keyboard_check(vk_up)){
  y -= 5;
  sprite_index = movendo_pra_cima;
}
if(keyboard_check(vk_right)){
  x += 5;
  sprite_index = movendo_pra_direita;
}
//Os outros dois
//Não esqueça que é só um exemplo, faça o movimento do jeito que
//você faz com uma estrutura de if's semelhante à acima

Quem ficar embaixo é quem vai mudar o sprite por ultimo. '-''-'-'-'-'-'-'-'-'
Tão ta, espero que tenha bugado seu jogo com sucesso. flw '-'-'-'-'-'-'-'-'-'-'

ATENÇÃO!!!!!!!!!!!!!!!
O código acima é um exemplo.


Última edição por Superbomber em Ter 09 Jun 2015, 15:19, editado 1 vez(es)

Superbomber

Ranking : Sem avaliações
Número de Mensagens : 100
Idade : 15
Data de inscrição : 28/04/2015
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por WellingtonBecker em Ter 09 Jun 2015, 11:17

Amigo, talvez meu tutorial/engine aqui abaixo na minha assinatura possa te ajudar. Movimento topdown.

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por jailson_dante em Ter 09 Jun 2015, 14:33

Amigo Superbomber, se isso é um bug eu não sabia, mas é que ele funciona em todas as setas, no caso do zelda, e não em algumas no caso do seu cóndigo. Mas valew.
E amigo WellingtonBecker, seu sistema é muito legal, mas ele faz a mesma função do meu, mas obrigado pela resposta. o tópico ainda esta aberto.

jailson_dante

Número de Mensagens : 11
Data de inscrição : 10/11/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Superbomber em Ter 09 Jun 2015, 15:18

Cof! Cof! Ninguém nunca leu um dicionário na vida? Cof! Cof!

Como falei, era só um exemplo. '-'-'-'-'-'-'-'-'
Código:

//Os outros dois(os outros dois códigos para as outras duas teclas)
//Não esqueça que é só um exemplo, faça o movimento do jeito que
//você faz com uma estrutura de if's semelhante à acima

'-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-''-'-'

Superbomber

Ranking : Sem avaliações
Número de Mensagens : 100
Idade : 15
Data de inscrição : 28/04/2015
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por jailson_dante em Ter 09 Jun 2015, 16:49

Eu entendi que isso é um exemplo, mas é a base. mesmo assim agradeço por sua atenção. Vou tentar explicar melhor. é como se a primeira posição que ele fica fosse a predominante. Como eu disse:
se eu apertar a tecla seta para baixo, o personagem vai andar olhando pra frente (no caso do topdown) e segurando a mesma tecla e apertando pra direita ou esquerda ele anda nas diagonais ainda olhando para frente, e o mesmo acontece com as outras teclas. Por favor mim ajudem.

jailson_dante

Número de Mensagens : 11
Data de inscrição : 10/11/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por matheusco em Ter 09 Jun 2015, 19:14

Um jeito de fazer é verificar a primeira tecla pressionada, colocar o player em um estado movendo pra esse lado, checar se outras teclas estão sendo pressionadas (sem trocar o sprite), e, quando o botão da primeira pressionada for solto, ai voltar ao estado inicial, verificar se algum tecla está sendo pressionada e repetir o processo.

matheusco

Número de Mensagens : 395
Idade : 23
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Willy em Ter 09 Jun 2015, 20:26

Certo... O personagem se move em quatro direções, portanto, temos quatro sprites diferentes.
É possível andar para a direita e para a esquerda ao mesmo tempo? Não, pois são direções totalmente opostas. Ou seja, devemos garantir que apenas uma direção seja executada.

Vou apontar um erro muito comum entre iniciantes baseado no código que o Superbomber deu de exemplo, incrementando com as outras duas direções que faltam:
Spoiler:

Código:
if(keyboard_check(vk_up)){
  y -= 5;
  sprite_index = movendo_pra_cima;
}
if(keyboard_check(vk_down)){
  y += 5;
  sprite_index = movendo_pra_baixo;
}
if(keyboard_check(vk_right)){
  x += 5;
  sprite_index = movendo_pra_direita;
}
if(keyboard_check(vk_left)){
  x -= 5;
  sprite_index = movendo_pra_esquerda;
}
Aparentemente, o código funcionará perfeitamente, mas, não é bem isso o que acontece. Entenda, se você teclar left e right ao mesmo tempo, left será executado porque vem depois de right na ordem do código, entretanto, por mais que não seja visível, você está andando para a direita e para a esquerda ao mesmo tempo. Uat?

Um dos princípios básicos da lógica de programação são as estruturas de if e de if-else. Como precisamos garantir que apenas uma direção seja executada, devemos encadear os códigos usando if-else ao invés de apenas ifs. Isso garantirá que apenas um código será executado e que a direção certa do sprite será tratada, ou seja, o código deve ficar parecido com isso:

Spoiler:

Código:
if(keyboard_check(vk_up)){
  y -= 5;
  sprite_index = movendo_pra_cima;
}else if(keyboard_check(vk_down)){
  y += 5;
  sprite_index = movendo_pra_baixo;
}else if(keyboard_check(vk_right)){
  x += 5;
  sprite_index = movendo_pra_direita;
}else if(keyboard_check(vk_left)){
  x -= 5;
  sprite_index = movendo_pra_esquerda;
}
Além disso, mesclar movimento horizontal com vertical, impedirá que seu personagem se mova na diagonal.

Me estendi um pouco, mas acho que fui claro.
Se tiver dúvidas, manifeste-se!
Flws... blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por jailson_dante em Qua 10 Jun 2015, 14:28

Caros amigos do GM brasil. Muito obrigado pela atenção de vocês e pelas respostas. Ontem a noite eu estava tentando resolver esse problema e consegui! Estou sem internet por isso não respondi de imediato. Não estou com o código aqui, pq to teclando do trabalho, mas eu fiz o que o nosso amigo matheusco falou e deu super certo, identifiquei as teclas com vaiáveis e fiz as condições e deu tudo certo do jeito que eu queria. Valew a todos! Hoje eu não tenho tempo mas depois eu posto o código. Valew! Tópico resolvido!

jailson_dante

Número de Mensagens : 11
Data de inscrição : 10/11/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por chicoweb em Qua 10 Jun 2015, 17:39

tipo, quando ando pra direita e aperto para cima segurando o botão direito ele ainda continua olhando para a direita... e daí vai...

Mas jovem??? o link anda assim mesmo!!! conheço ele desde que ele nasceu kkkkkk (Melhor jogo da historia link to the past).

Pelo seu exemplo, se vc soltar a direita ai sim ele olha para cima. Ele não tem sprite para diagonal.

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Lighter em Qui 11 Jun 2015, 14:30

Porque ninguém usa motion_set(...)? É desvantajoso usar essa função, ou só é pouco típica entre os programadores ?


Última edição por Lighter em Sex 12 Jun 2015, 18:52, editado 1 vez(es)

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Willy em Qui 11 Jun 2015, 14:46

motion_set é "genérico de speed".
Programadores mais experientes sabe que o uso de funções variadas de speed costumam dar bastante problema quando o assunto é colisão.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

Mensagem por Lighter em Qui 11 Jun 2015, 16:01

Willy escreveu:motion_set é "genérico de speed".
Programadores mais experientes sabe que o uso de funções variadas de speed costumam dar bastante problema quando o assunto é colisão.

Faz sentido, até porque essas funções estão nos demos do GM. De colisões você entende né willy rsrsrs. flw

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Re: [Resolvido]Movimento/troca de sprites estilo zelda nes

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


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