|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | |
| 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...
|
|
|
|  |  | | |
| 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 |
|
|
|  |  | | |
| Re: Movimentação do Cenário! |
|
|
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!
|
|
|
|  |  | | |
| 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.
|
|
|
|  |  | | |
| 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! |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
| | |
|
|
|  |
 |  |
|