Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Movimentação do Cenário!
Anterior Anterior
 
Próximo Próximo
Nova Entrada 14/10/2009 17:32
  lcolnaghi
32 tópicos
8th Level Poster


Re: Movimentação do Cenário! 
Supondo que você está usando a classe spritebatch, você no caso não vai querer transformar as posições dos objetos, mas sim quando for renderizar vai querer apenas adicionar o deslocamento da câmera à posição do objeto... no caso seria legal ter uma abstração de câmera ( 2d ) ... e provavelmente a câmera irá seguir a posição do jogador, que este no caso é o único que sua posição absoluta também irá se mover. Outra coisa importante é conseguir evitar as chamadas de spritebatch.draw() quando um objeto não seria renderizado na tela. apesar de eles não serem renderizados mesmo assim, por causa de culling, fazer muitas chamadas inúteis ainda assim sobrecarregam o seu jogo...
 
Nova Entrada 15/10/2009 0:33
  setherK
85 tópicos
3rd Level Poster


Re: Movimentação do Cenário! 
Você pode usar o overload da função SpriteBatch.Begin.

O ultimo deles aceita uma Matriz, você só precisa colocar:

Matrix transform = Matrix.CreateTranslation (new Vector3(pos.X, pos.Y, 0);

e usar a mesma...

Qualquer coisa é só falar, caso esteja mal explicado. LOL

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Nova Entrada 15/10/2009 14:11
  falleirok
18 tópicos
10th Level Poster


Re: Movimentação do Cenário! 
Modificado Por falleirok  em 15/10/2009 12:13:46)
Primeiro consegui movimentar utilizando a classe Matrix, o problema é que movimenta tudo.

Depois,  coloquei o overload do spriteBatch.Begin utilizando matrix somente para o personagem, mas assim tudo ficou desconectado. As texturas não combinam mais com os locais de colisão.

Tendo alguma refrência agradeço!

 
Nova Entrada 15/10/2009 19:26
  lcolnaghi
32 tópicos
8th Level Poster


Re: Movimentação do Cenário! 
Desculpe mas não entendi porque você está usando este overload...

A idéia que tenho é que você deve ter 2 tipos de posições dos elementos na tela : a relativa e absoluta. Digamos que sua câmera mude  e todos os objetos tenham de ser movidos pra outro lugar. no caso você irá apenas mover a posição relativa, e todo o cálculo de colisão seria feito nas posições absolutas. No caso a posição relativa é calculada quando você for efetuar o Draw(), adicionando a posicão do objeto com a posição da câmera, multiplicado pelo grau de zoom, etc... O único caso em que a posição absoluta deve ser igual a relativa ( tirando zoom ) é a da posição do player.
Simples assim, sem nenhum overload , nem técnica maluca para implementar uma câmera 2D abstrata, ainda mais usando spritebatch.

A não ser se eu não tenha entendido sua pergunta, mas acho que essa idéia cabe bem pra um platformer 2d, usando SpriteBatch.

 
Nova Entrada 16/10/2009 11:39
  falleirok
18 tópicos
10th Level Poster


Re: Movimentação do Cenário! 
Valeu a força de todos!

Consegui uma boa referência neste link: http://www.theindiebay.com/2009/07/31/camera-2d-in-xna/

Só tive que adaptar para o meu projeto, onde meu cenário é infinitamente maior que a tela. Assim, fiz uma verificação de cenário, onde a câmera só se move quando o personagem está no centro da tela e se existe cenário para ele se mover para qualquer lado!

Ficou bem legal!

Obrigado!
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Movimentação do Cenário!
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso