Animação 2D
Alexandre Tolstenko Nogueira
[email protected]
http://tolstenko.net
Sinopse
1.
2.
3.
4.
5.
6.
7.
Apresentação
Sprite
Função SpriteBatch.Draw()
Classe de Animação2D
Automatizando nossa classe
Referências
Agradecimentos
1. Apresentação
2. Sprite
• Definição:
– Do latim spiritus, significando "duende", "fada“.
• Objetivo:
– Simular objetos 2,5D ou 3D.
• Formatos usados:
– Qualquer formato que possua transparência (ex.:
png)
– Qualquer formato sem tranparencia, mas com um
fundo de cor fixa (ex.: jpg)
Transparente
Opaco
M-M-M-MONSTER KILL
2. Sprite
• Estranho?
– Cadê o Link andando para a esquerda?
• Não Precisa!
– Basta inverter ele andando para a direita.
2. Sprite
• Frame
– É um quadro ou retâgulo do sprite que é exibido
como se fosse uma imagem independente.
– É como se colocassemos um papel com um furo
retangular que cobrisse o sprite inteiro e
movessemos esse papel sobre o sprite:
• Veremos apenas aquilo que estiver dentro do quadro.
• Se olharmos apenas para o quadro, e o mesmo saltar
em imagens sequenciais, veremos uma Animação2D!!!
2. Sprite
2. Sprite
• Quadros que andam
2. Sprite
• Funcionamento:
1. A imagem inteira é carregada para a memória
na etapa de carregamento do jogo.
2. Apenas um “Frame” da imagem é exibido por
vez.
3. A cada X clocks do game, o quadro pula para
uma nova posição.
2. Sprite
• Qual o melhor sprite? (Suponha que ambas tenham a mesma quantidade de frames)
– Para o programador?
• Lembra dos quadros que andam?
– Para o cartucho?
• A primeira figura é mais compacta e ocupa menos espaço nos cartuchos
3. SpriteBatch.Draw()
• É uma função com vários “overload”
• Irei mostrar apenas um.
– Tarefa de casa: conhecer os outros “overload”.
• Assinatura:
– SpriteBatch.Draw(Texture2D, Rectangle,
Nullable<Rectangle>, Color)
• Uso:
– spriteBatch.Draw(spriteSheet, destinationRect,
sourceRect, Color.White);
3. SpriteBatch.Draw()
• Rectangle(X, Y, Width, Height)
Width
(X,Y)
Height
3. SpriteBatch.Draw()
• Vide projeto exemplo1.
– Altere o valor do inteiro na linha 33: “int
spriteWidth = 64;” e veja o erro que ocorre.
• Isso ocorrerá com muita frequencia
• Vide projeto exemplo1_mod.
– Outro sprite com outra animação
• Vide Projeto exemplo1_mod2
– Vide cor de transparencia definida para o branco
4. Classe de Animação 2D
• Vide projeto exemplo2.
5. Automatizando nossa Classe
• Vide projeto exemplo3.
6. Referências
•
•
•
•
ShyGuy Kingdom
PlanetRenders
XNAfusion
MSDN
7. Agradecimento
spriteBatch.DrawString(
Arial,
"Obrigado Pela Atenção!",
positionVect,
Color.Black);
Download

Slide 1 - Tolstenko