Conectar-se
Quem está conectado
15 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 13 Visitantes

CRP-Max, Kapoty

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 24

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

sistema de movimentação de personagem

em Seg 21 Abr 2014, 21:15
Oi galera, meu primeiro tópico!

estou acompanhando bastante o fórum e aprendendo um monte com os posts, muito bom trabalho, já indiquei a vários amigos, mas acredito que estou com uma dúvida bem específica que não está aqui, ou eu não soube juntar as peças.
Estou criando um jogo em que o movimento do personagem é realizado em posições fixas num grid de 6 casas.  Similar aqueles joguinhos de corrida bem antigos.

Imagina esse sistema em que existem 4 posições apenas, cada uma tem uma coordenada fixa e um desenho diferente do outro.

A questão é, não estou conseguindo controlar isso;
a lógica que estou tentando fazer é gerar 1 variável para cada posição (já que são poucas), e então, usar o teclado para ficar trocando de váriável, (cada toque no direcional troca a variável), ao mesmo tempo em que a troca acende e apaga os objetos.

Minhas dúvidas são;
- a melhor maneira de fazer os objetos acenderem e apagarem de acordo com uma variável.  Estou tentando usar 'visible = true/false'. Mas ainda não deu certo.
- o controle da variável (que é o controle do jogo), código que indica como as setas direcionais mudam as variáveis, tem q ficar em que objeto? Devo criar um objeto invisível e específico só pra ele? aplico no add event>create ou no add event>game start?
- em que objeto eu posso iniciar as variáveis de maneira mais eficaz?
- o grid de posicionamento do comando draw sprite (x, y) parece que é diferente das coordenadas que podemos ver na janela de room. São duas coordenadas diferentes?

Minhas limitações são;
- os objetos devem se mover apenas nas 'casas' específicas e cada uma delas tem um desenho (sprite) específico.
- o objeto só muda (de casa e de sprite) quando o jogador indica alguma direção
- os sprites além de desenhos diferentes, tem tamanhos diferentes também.

Desculpa as delongas, mas acho que todas essas duvidas são referentes a um único problema, que ainda estou tentando encontrar a melhor maneira de solucionar.  É isso, obrigado desde já a quem puder ajudar.  Flws
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Seg 21 Abr 2014, 21:20
Rapaz, vc deu sorte que eu ia desenvolver um jogo tipo isso, exatamente com 4 casas, o resto é caso de você adaptar. Só está feita a movimentação! A engine tá aí, para GMS e se tiver dificuldades, você pode abrir com o winrar.

http://sharesend.com/q0g6aw26
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 24

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Seg 21 Abr 2014, 21:49
Gabreel, obrigadão pelo arquivo, mas não era bem isso.  O seu personagem está se movimentando para os lados e ele sempre tem a mesma animação.
o caso que estou tentando solucionar tem desenhos diferentes e não tem "movimento".  Os objs apagam de um lado e acendem em outro.

mas obrigadão.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Seg 21 Abr 2014, 21:55
Como eu disse, é questão de adaptar. É exatamente a mesma coisa, só que com outros efeitos!
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Seg 21 Abr 2014, 22:24
Bom, você pode tanto ter 4 objetos e colocar variaveis em cada um deles - essas variáveis vão controlar colisões e o desenho da sprite - como também ter um objeto só para as 4 direções, apenas desenhando cada uma de acordo com o valor de uma variável "player_atual".

 É importante declarar a origem da sprite num ponto comum entre as quatro para evitar problemas de posicionamento - aliás, isso responde sua 4ª dúvida: como a sprite vai aparecer na room vai depender da origem dela. Ou o "offset" ( basicamente, vai ser desenhado do resultado de [posição]-[origem] ). Se elas tem tamanhos diferentes, só definir a origem num ponto em que quando forem jogadas nas coordenadas, não fiquem desalinhadas, como já falei. As coordenadas são uma só, aquela grid é só para efeito de posicionamento, não há um sistema de "unidades", digamos assim.

Um esboçozinho (clique no spoiler para abrir):
Spoiler:

Create:
Código:
player_atual = 1
player1_posx = 40   // Posição x do player 1
player2_posx = 150 //            "" do 2
player3_posx = 350 // E assim vai
player4_posx = 580
player_sprite = spr_player2 // Variavel geral
player_posx = player2_posx // Variavel geral
player_posy = room_height-30; // Definida corretamente a origem, da pra colocar todas no mesmo eixo
Step
Código:
// Apertou esquerda e a variavel esta nos limites
if (keyboard_check_pressed(vk_left) and player_atual > 1) {
   player_atual -= 1
// Apertou direita
} else if (keyboard_check_pressed(vk_right) and player_atual < 4) {
   player_atual += 1
}

switch(player_atual) {
    case 1:
         player_posx = player1_posx;
         player_sprite = spr_player1;
         break;
    case 2:
         player_posx = player2_posx;
         player_sprite = spr_player2;
         break;
    case 3:
         player_posx = player3_posx;
         player_sprite = spr_player3;
         break;
    case 4:
         player_posx = player4_posx;
         player_sprite = spr_player4;
         break;
}
Draw:
Código:
draw_sprite(player_sprite,image_index,player_posx,player_posy); // Usando image_index da ate pra você fazer uma animaçãozinha

Suponho que já tenha algum tipo de experiência com GML, já que você já está a um tempo frequentando o fórum [e indicando aos amigos, pergunto, você tem alguma experiência no ramo de gamedev também? Razz].

Abraços o/
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 24

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Seg 21 Abr 2014, 22:39
tenho um pouquinho de experiência só, sempre aprendendo =).  
vou tentar aplicar aqui.
avatar
Data de inscrição : 15/08/2010
Número de Mensagens : 1597
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 147

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://spyreserver.16mb.com

Re: sistema de movimentação de personagem

em Qua 23 Abr 2014, 23:31
olá, não sei bem como é esse jogo, mais pelo oque vi, ele pode ser feito com apenas o draw, sem precisar criar varios objetos. a colisão seria feita em retangulo e um unico objeto desenharia o seu personagem.

ou até mesmo criar um unico objeto para checar a colisão...

acredito que com isso seu jogo ficaria até mais leve ;)

flw, vlw Happy
avatar
Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 24

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: sistema de movimentação de personagem

em Qui 24 Abr 2014, 01:44
obrigado pela ajuda.
eu já terminei praticamente essa parte. estou apenas corrigindo os bugs agora.

Realmente é um sistema de movimentação bem particular, que eu não tinha tentado antes, mas agora já está resolvido.  O que fiz foi mais ou menos o que descrevi antes.  pus uma variável em cada casa, e fiz que o teclado alterasse a variável, depois pra checar a colisão apenas pedi para conferir se as variáveis eram iguais no disparador e no alvo.  Assim que estiver com menos bugs eu posto aqui mesmo.

o jogo está praticamente terminado e tem 4Mb

obrigado pela ajuda.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum