[Tutorial] Renderizando objetos e movendo-os com XNA
Domingão começou, estou meio lezado ainda, então desculpa algum erro de código =D.
Introdução
O intúito deste tutorial é mostrar como é fácil trabalhar com objetos 2D no XNA.
Eu farei 2 exemplos, o primeiro sem orientação à objetos e o segundo aplicando OO.
Softwares e Assets necessários
Visual C# Express ou Visual Studio, XNA Game Studio Express e a imagem que utilizaremos, que em homenagem ao nosso jogo em desenvolvimento do Pac-Man, será ele =D.

Criando um novo projeto
Partindo do ponto que você já tenha o XNA devidamente instalado, abra o Visual C# Express e clique sobre File > New Project. Nas opções que aparecerão, selecione Windows Game, dê um nome para seu jogo, como mostrado na Figura 1 e 2.


Carregando uma imagem na tela
Basicamente, para carregar uma imagem na tela temos que primeiramente instanciar um objeto do tipo Texture2D (Para objetos 2D), carregar seu conteúdo no método LoadContent e renderizar a imagem no método Draw, que é o método responsável por desenhar os objetos na tela.
Antes de criarmos a variável para a textura, precisamos adicionar esta textura ao nosso projeto. Para isso, abra o solution explorer (CTRL+W, S), expanda a pasta content, clique com o botão direito sobre a mesma. Selecione a opção Add > Existing Item e selecione a imagem que foi salva no começo deste tutorial.



Um ponto interessante que quase não vejo por aà é a criação de constantes para armazenar o nome das imagens. Quando criamos constantes, elas representam strings, inteiros, etc, e neste caso, se o nome da sua imagem mudar, você muda apenas na constante, mantendo seu código atualizado.
Vamos então criar uma constante chama PACMAN_ASSET que armazenará o nome do asset do pacman.
 
Para carregar nossa imagem (Textura) vamos criar uma variável do tipo Texture2D, e chamá-la de pacman, como mostrado na figura abaixo:

Até este momento, temos apenas uma variável que armazenará a nossa imagem, e para que seu conteúdo seja carregado, precisamos no método LoadContent informar seu asset. A figura abaixo mostra como carregar uma textura.

Nota: Note que usamos a constante PACMAN_ASSET ao invés de digitar o nome do asset manualmente.
O próximo e último passo a ser feito é renderizar esta imagem na tela. O método Draw é responsável por fazer isso, então vamos a ele.

O que fizemos foi iniciar o desenho do lote de sprites, seguido pelo comando de desenhar o sprite pacman, na posição (0, 0) da tela e com cor branca, que significa que nenhuma mistura de cores será usada.
Neste ponto, aperte F5 para que o jogo seja compilado e exibido na tela.

Nota: No XNA, o eixo X e Y começam no canto superior esquerdo da tela, por isso quando informamos na posição Vector2.Zero que significa (0, 0) nosso objeto ficou no canto superior esquerdo ao invéz de ficar no canto inferior.
Agora nosso próximo passo é fazer com que esta sprite ande pela tela.
Movendo a imagem pela tela
Se ao carregar nossa imagem, informamos a posição como Vector2.Zero indicando que ela ficará no topo da tela, tudo que precisamos fazer é criar uma nova variável para armazenar sua posição.

Agora, no método LoadContent, vamos colocar um valor para a posição do objeto na tela.

E finalmente, no método Draw, substituiremos o Vector2.Zero pela posição do nosso objeto na tela.

Se rodarmos o game agora (F5), podemos notar que o objeto já não está mais no topo superior esquedo da tela, e sim a 100 pixels da esquerda e topo.

Trabalhando com o Teclado
Bom, agora que já temos uma variável para controlar a posição do objeto na tela, nada mais justo que criar uma função para movelo =D.
Basicamente temos o Keyboard e KeyboardState para trabalhar com o teclado ou joystick no XNA. O que devemos fazer é criar uma instância do KeyboardState que armazenará o estado das teclas do teclado para saber qual está pressionada e aplicar uma função sobre ela.
Tudo isso deve ser feito no método Update, que é o loop do jogo. Para quem não está familiarizado com os métodos do XNA, aconselho a leitura do PPT desenvolvido pelo pessoal do SENAC e cedido pelo prof. Gustavo Anselmo, que pode ser baixado aqui (XNA_Aula2.pdf e XNA_Aula3.ppsx).

Basicamente criamos um objeto do tipo KeyboardState que vai armazenar o estado das teclas. Depois pedimos o estado atual das teclas através do Keyboard.GetState();
Conclusão
Vimos que é simples de manusear objetos com o XNA. No próximo tutorial, vamos ver como aplicar orientação à objetos neste código, adicionando-o para uma classe!
Até lá =D
One Comment to “[Tutorial] Renderizando objetos e movendo-os com XNA”
Leave a Reply





Show de bola! Muito legal, vou tentar fazer por aqui = ]
Abraços.