www.programadoresdejogos.com

[P D J - Programadores e Desenvolvedores de Jogos]
Bem-vindo: Qua Set 08, 2010 8:38 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 10 mensagens ] 
Autor Mensagem
 Título: Scrolling em 2D
MensagemEnviado: Seg Jan 25, 2010 8:29 pm 
Offline
Iniciante PDJer
Iniciante PDJer
Avatar do usuário

Registrado em: Ter Jun 23, 2009 5:17 pm
Mensagens: 59
Estou fazendo um jogo em que a camera precisa deixar o jogador sempre no centro, e estou em dúvidas em como fazer.

Eu consegui fazer uma movimentação simples fazendo com que o personagem simplesmente fique parado e o cenário se mova. Quando o personagem ande para a ESQUERDA por exemplo, eu ADICIONO 1 no x da matriz, assim o mapa se deslocaria para direita, dando a ideia do personagem se movimentar para a esquerda.
Pensando um pouco eu pensei em movimentar o personagem pelo mapa e fazer o OpenGL acompanhar o personagem com a "camera", o que facilitaria na parte de deslocar a animação a cada passo.

Seria melhor eu continuar movendo o mapa ou existe modo simples de mover a "camera" com o opengl?


Voltar ao topo
 Perfil  
 
 Título: Re: Scrolling em 2D
MensagemEnviado: Seg Jan 25, 2010 10:37 pm 
Offline
Membro PDJer
Membro PDJer
Avatar do usuário

Registrado em: Sex Nov 05, 2004 1:40 pm
Mensagens: 120
Localização: Florianópolis
edmo182 escreveu:
Estou fazendo um jogo em que a camera precisa deixar o jogador sempre no centro, e estou em dúvidas em como fazer.

Eu consegui fazer uma movimentação simples fazendo com que o personagem simplesmente fique parado e o cenário se mova. Quando o personagem ande para a ESQUERDA por exemplo, eu ADICIONO 1 no x da matriz, assim o mapa se deslocaria para direita, dando a ideia do personagem se movimentar para a esquerda.
Pensando um pouco eu pensei em movimentar o personagem pelo mapa e fazer o OpenGL acompanhar o personagem com a "camera", o que facilitaria na parte de deslocar a animação a cada passo.

Seria melhor eu continuar movendo o mapa ou existe modo simples de mover a "camera" com o opengl?


A ideia é esta kra.
Bota a camera no centro e quando o personagem chegar na mesma posição da camera, você faz a camera receber a posicao de x e y do personagem.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Seg Jan 25, 2010 11:01 pm 
Offline
Moderador
Moderador
Avatar do usuário

Registrado em: Qua Jun 18, 2003 3:02 pm
Mensagens: 315
Localização: Curitiba
Então, faz muito tempo que eu não mexo com OpenGL, mas dá uma olhada na documentação, mais especificamente na função glTranslate:

http://www.opengl.org/sdk/docs/man/xhtm ... nslate.xml


A única coisa é que você precisa estar usando a matriz de projeção, e não a matriz "GL_MODELVIEW" (ver http://www.opengl.org/sdk/docs/man/xhtm ... ixMode.xml )

Aliás, desconfio que seu problema seja exatamente esse, sobre como usar as matrizes. O que eu acho que está acontecendo é que você está usando só a GL_MODELVIEW, e nem conhece a GL_PROJECTION (bom, eu tb nem lembrava disso antes de ver a documentação). O que acontece é que as operações atuais estão sendo feitas no seu mundo propriamente, se você mudar para a matriz GL_PROJECTION, essas alterações serão feitas na câmera.

Tem como botar um pedaço do código-fonte pra gente dar uma olhada?

EDIT: por algum motivo, não consegui postar com os links para urls, a mensagem só apareceu quando eu tirei esses links...


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Seg Jan 25, 2010 11:12 pm 
Offline
Membro PDJer
Membro PDJer
Avatar do usuário

Registrado em: Sex Nov 05, 2004 1:40 pm
Mensagens: 120
Localização: Florianópolis
Aproveitando o tópico.
Alguém sabe responder se quando você trabalha com a câmera em Opengl, tanto 2D quanto 3D, o sistema descarta os objetos que não estão sendo vistos pela câmera ?


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Seg Jan 25, 2010 11:41 pm 
Offline
Moderador
Moderador
Avatar do usuário

Registrado em: Qua Jun 18, 2003 3:02 pm
Mensagens: 315
Localização: Curitiba
Cara, até onde eu saiba não, isso é uma função que você mesmo precisa desenvolver.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Fev 03, 2010 3:44 pm 
Offline
Iniciante PDJer
Iniciante PDJer
Avatar do usuário

Registrado em: Ter Jun 23, 2009 5:17 pm
Mensagens: 59
Valeu ae pessoal!

Eu consegui fazer a movimentação de forma bem simples.
Eu leio a matriz do mapa e imprimo os tiles, quando um botão direcional é pressionado, eu adiciono/subtraio 1 da matriz de tiles, o que faz com que eu imprima a matriz começando de outra referencia.

Ex: matriz[i+xTeclado][j+yTeclado]

Só não sei se vou conseguir agora fazer esse movimento "suave" junto à animação do player, pois a tela ta pulando de tile em tile.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Fev 03, 2010 9:46 pm 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sex Jan 18, 2008 4:58 pm
Mensagens: 867
Localização: Brazil
Puuts, eu tinha feito no midia um sistema que de offset com efeitos de smoothing e tal, mas perdi tudo.

Bom, eu tinha vaarrias variaveis com timers e etcc..
Mas o importante mesmo é que a parte que desenha, usa numero totalmente diferentes da parte logica do jogo.

por exemplo
Se voce tem um player na posicao 50x50 e outro na posicao 1000x1000, naõ mude a posicao deles apenas porque a camera se movimentou.

Eu tinha uma variavel que marcava o X/Y da camera e depois somava o offset com os timers(para suavilizar, e utilizava regra de 3 para saber quanto tempo faltava para terminar a animação)

Tambem usava -1 e +1 quadrados escondidos, pois na hora de se movimentar, pelo menor inicialmente(sem suavilizar) fica mais facil.

Depois posto mais...
http://www.youtube.com/watch?v=ZVSkuj__4zo

De uma olhada, se for isso, faço o codigo de novo no fim de semana e posto ai.

_________________
Procurando por artigos?
Imagem
http://www.desenvolvedoresonline.com

Imagem
http://www.renatocron.com/


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qui Fev 04, 2010 1:57 pm 
Offline
Iniciante PDJer
Iniciante PDJer
Avatar do usuário

Registrado em: Seg Ago 11, 2008 5:11 pm
Mensagens: 26
Localização: Brasília
Da um saque http://www.opengl.org/sdk/docs/man/xhtm ... nslate.xml

_________________
Abraão Isvi
Servo de DEUS,
Irmão de Cristo.
http://www.pyxgames.com
http://www.pyxgames.com/toupety/pt
http://www.pyxgames.com/toupety/eng


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sex Fev 05, 2010 8:47 pm 
Offline
Colaborador PDJer
Colaborador PDJer
Avatar do usuário

Registrado em: Sex Jan 18, 2008 4:58 pm
Mensagens: 867
Localização: Brazil
abraao.isvi, isso iria fazer com que todas as variaveis (tela, cursor, menu) ficassem a deriva do glTranslate, o que daria um trablalhao com pushMatrix e etc..
Mas tambem funciona!

_________________
Procurando por artigos?
Imagem
http://www.desenvolvedoresonline.com

Imagem
http://www.renatocron.com/


Voltar ao topo
 Perfil  
 
 Título: Desenhado fixo em relação a outros objetos na tela
MensagemEnviado: Sáb Fev 06, 2010 1:05 pm 
Offline
Iniciante PDJer
Iniciante PDJer
Avatar do usuário

Registrado em: Seg Ago 11, 2008 5:11 pm
Mensagens: 26
Localização: Brasília
veja aki como eu fiz.
é um pseudo codigo de java com LWJGL:

Código:
public void desenhar(Graphics g) {

      paralaxeFundo.desenhe(g);

      g.translate(getCameraX(), getCameraY());

      desenhar(container, g);

      // APOS O RESET TRANSFORM GARANTE QUE SERÃO FIXOS NA TELA
      g.resetTransform();

      desenharFixos(container, g);

   }

_________________
Abraão Isvi
Servo de DEUS,
Irmão de Cristo.
http://www.pyxgames.com
http://www.pyxgames.com/toupety/pt
http://www.pyxgames.com/toupety/eng


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 10 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Procurar por:
Ir para:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB