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);