Neste parte do tutorial desenvolveremos a classe Animacao. Como podemos observar em qualquer jogo de plataforma, durante a movimentação do jogador e objetos pela tela, sempre é uma espécie de conjunto de animações, como por exemplo, animação para o personagem andar, correr, pular, etc. Sendo assim, a classe que desenvolveremos será responsável por criar nossos frames de animação e animá-los caso haja necessidade.
Inicialmente, crie uma nova classe no projeto, com o botão direito do mouse clique no nome do seu projeto localizado no Solution Explorer, depois no submenu Add, e por fim Class. Dê o nome Animacao para classe e clique em okay.
Antes de começar o desenvolvimento da classe, vamos analisar seus termos técnicos para que possamos identificar seus atributos e métodos dentro do jogo. Toda animação possui uma certa quantidade de quadros de desenho, um tempo de transição de um desenho para o outro e a instrução de repetição, caso exista. Por tanto identificamos três atributos da nossa classe:
- Quadros da Animação - Todos os desenhos que compõem ela.
- Quantidade Total de Quadros.
- Tempo de Intervalo - Tempo de transição de um quadro para o outro.
- Repetição - Se a animação fica ou não repetindo.
Nessa classe trabalharemos com Rectangles, que em termos computacionais, é preciso de um dispositivo gráfico para renderiza-los. Para isso faramos referência ao framework do XNA. Indicado abaixo:
using Microsoft.XNA.Framework;
using Microsoft.XNA.Framework.Graphics;
Pois bem, agora podemos começar o desenvolvimento da classe Animacao. Dentro do bloco:
public class Animacao
{
// Digitar todo o código da classe aqui.
}
Começaremos a declaração dos atributos identificados anteriormente para a nossa classe. Todos atributos serão privados somente para a Animacao, entretanto, podemos modificar seus valores, para isso serão criados os métodos get/set para cada um dos atributos.
// Lista que contém os quadros da Animacao
private List<Rectangle> quadrosAnimacao = new List<Rectangle>();
// Método para obter essa lista quando necessário
public List<Rectangle> QuadrosAnimacao { get { return this.quadrosAnimacao; } }
// Tempo de intervalo de transição dos quadros da Animacao
private float intervalo = 0.10f
// Métodos para obter e setar o intervalo quando necessário
public float getIntervalo() { return this.intervalo; }
public void setIntervalo(float _intervalo) { this.intervalo = _intervalo; }
// Define se existe repetição na Animacao
private bool existeLoop = false;
// Métodos para obter e setar a existência de repetição
public bool getExisteLoop() { return this.existeLoop; }
public void setExisteLoop(bool _loop) { this.existeLoop = _loop; }
// Define a quantidade total de frames da Animacao
private int quadrosTotal = 0;
Prontinho muchachos, criamos os atributos e os métodos para controlar esses atributos dentro da classe. Bom, como agora já temos os atributos, faltam os métodos da classe. Para um animação só existe o método construtor, que vai construir a animação e deixa-la armazenada na memória, e ela será acionada conforme instruções que receber do objeto a ser animado.
// Método que constrói nossa Animacao
// é enviado para esse método uma lista de quadros
// com inicio, e total de quadros dela
public Animacao(List<Rectangle> quadros, int inicio, int total)
{
// Define a quantidade de quadros da Animacao
this.quadrosTotal = total;
// Adiciona cada quadro que foi recebido a lista de quadros da Animacao
for (int i = inicio; i < (inicio + total); i++)
{
this.quadrosAnimacao.Add(quadros[i]);
}
}
E ai está nossa classe Animacao, prontinha direto do forno ( HUHAUHA ) para ser utilizada. Entretanto guardaremos ela, pois para se ter uma animação é preciso um objeto, que em nosso caso, não temos ainda. Conforme os tutoriais forem evoluindo, todas as classe serão diretamente conectadas umas as outras. Aguardo todos em nosso próximo tutorial. ( Como de costume nosso gif básico HUAUHAUHAHU )
Bem legal o tutorial, valeu!
ResponderExcluirdelicia de tutorial, valeu por nos ajudar e compartilha seu conhecimento. obrigado.
ResponderExcluir