quinta-feira, 5 de julho de 2012

[Tutorial] [XNA] Jogo de Plataforma - Parte 3

Olá pessoal, em nossos últimos tutoriais desenvolvemos as classes Camera2D e Animacao para o nosso jogo. Caso não tenha acompanhado os tutoriais anteriores dessa série, sugiro que acesse os seguintes links antes de prosseguir:

Primeiros Conceitos (Conhecendo o XNA)Parte 1 (Classe Camera2D)Parte 2 (Classe Animacao)

Nesse tutorial, desenvolveremos uma classe de objeto que estará presente no jogo. O nome para tal classe será Tile. Os tiles são pequenos pedaços de imagens que servem para criar uma nova imagem composta conhecida como layer, utilizadas para criar o cenário de um jogo. Observe a imagem abaixo:

(Super Mario Bros 3)

Na imagem acima temos um jogo com seu personagem, cenários, inimigos, etc. Para montar esse cenário 2D de maneira mais prática e, economizando o máximo possível de uso da memória do computador. Construímos esse objeto utilizando vários tiles que são armazenados, um por um, na classe Tile. Sendo assim possuímos somente os tiles principais, mas montados o mapa conforme nossa necessidade. Abaixo um exemplo com os tiles utilizados para montar o cenário da fase acima:

(Tiles do Jogo Super Mario Bros)

Muito bem! A classe que iremos desenvolver agora não será ainda capaz de montar nosso cenário, somente de armazenar os tiles acima, para posteriormente, serem usados na construção de um cenário. Vamos agora analisar nossos atributos. Todo tile tem o seu tipo de colisão, sua textura e seu tamanho. Crie uma nova classe dentro do projeto do jogo chamada Tile. Começamos a montar nossa classe fazendo referências aos frameworks.

using Microsoft.XNA.Framework;
using Microsoft.XNA.Framework.Graphics;

Antes de começar a escrever nosso código dentro do bloco da classe, vamos criar um tipo de atributo enumerador, responsável por identificar o tipo de colisão. Esse processo facilita e padroniza os dados.

// Enumeração dos tipos de colisão existentes
public enum TipoColisao
{
     // Refere-se ao Tile passável
     passa,

     // Refere-se ao Tile impassável
     naoPassa,

     // Refere-se ao Tile plataforma
     plataforma,
}

Pronto :) Criamos nosso enumerador, agora podemos começar a escrever nossa classe, definindo os atributos e métodos dos tiles.

public class Tile
{
     // Definição da textura do Tile
     protected Texture2D tile;
     // Definicão do tipo de colisão do Tile, observe
     // a variável é do tipo enumerador que criamos
     public TileColisao colisao;
     // Definição do tamanho do Tile
     public Vector2 tamanho;

     // Método que constrói o nosso Tile, recebendo
     // a textura e o tipo da colisão
     public Tile(Textura2D textura, TileColisao _colisao)
     {
          this.tile = textura;
          this.colisao = _colisao;
          this.tamanho = new Vector2(textura.Width, textura.Height);
     }
}

Agora temos nossa classe Tile completa, pronta para começar a receber nossos tiles, nos próximos tutoriais aprenderemos a implementar essa classe em nosso projeto e criar o cenário conforme nossa preferência. Aguardo vocês e até breve. ( com mais um gif HUAHUAHUAUH sou viciado D: )


11 comentários:

  1. Quando vai sair a parte 4?

    ResponderExcluir
    Respostas
    1. Em breve! A parte 4 é conjunta com a parte 5, e ambas são bem extensas, estou terminando elas o mais rápido possível.

      Excluir
  2. Aguardando a parte 4. Parabéns pelas anteriores!

    ResponderExcluir
  3. Estou aguardando ansiosamente pela próxima parte! Tem alguma previsão? XD

    ResponderExcluir
    Respostas
    1. A parte 4 sairá ainda essa semana junto com novos tutoriais :)

      Excluir
  4. Bom dia CK, a parte 4 vai sair?
    Obrigado!

    ResponderExcluir
  5. Desistiu de dar continuidade ao tutorial ?

    ResponderExcluir
  6. Pow..seria legal as outras partes...parou?

    ResponderExcluir
  7. eu estava tão feliz, cheguei até aqui de boas, e bom sempre ter a base de um projeto, pena que desistiu, se alguem conseguir termina ae posta o link para nos valeu, um forte abraço a todos, vamos a luta procurar outro na internet. valeu.

    ResponderExcluir