Animar uma Imagem em XNA Game Studio 4.0
Posted by admin on 7 de Dezembro de 2012 | Filed under Blog

Como já havia falado no post A Minha Primeira Experiência com XNA Game Studio 4.0 hoje venho mostrar os primeiros progressos conseguidos a programar algo em XNA, como base peguei num tutorial Your First Game: Microsoft XNA Game Studio in 2D que consistia apenas em animar uma imagem escolhida previamente.
O código utilizado nesta experiência foi o seguinte:
Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; namespace FirstXnaApp { #if WINDOWS || XBOX static class Program { static void Main(string[] args) { using (Game1 game = new Game1()) { game.Run(); } } } #endif } |
Game1.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace FirstXnaApp { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; const String gameName = "Bounce Ball"; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } protected override void Initialize() { Window.Title = gameName; base.Initialize(); } Texture2D MyBot; Vector2 spritePosition = Vector2.Zero; protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); MyBot = Content.Load<texture2d>("bola"); } protected override void UnloadContent() { } // Vector que Guarda Informação da Posição da Bola. Vector2 spriteSpeed = new Vector2(50.0f, 50.0f); void UpdateSprite(GameTime gameTime) { // Mover a Bola em Relação à velocidade / tempo decorrido spritePosition += spriteSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds; int MaxX = graphics.GraphicsDevice.Viewport.Width - MyBot.Width; int MinX = 0; int MaxY = graphics.GraphicsDevice.Viewport.Height - MyBot.Height; int MinY = 0; // Verificar a colisão com as extremidades if (spritePosition.X > MaxX) { spriteSpeed.X *= -1; spritePosition.X = MaxX; } else if (spritePosition.X < MinX) { spriteSpeed.X *= -1; spritePosition.X = MinX; } if (spritePosition.Y > MaxY) { spriteSpeed.Y *= -1; spritePosition.Y = MaxY; } else if (spritePosition.Y < MinY) { spriteSpeed.Y *= -1; spritePosition.Y = MinY; } } protected override void Update(GameTime gameTime) { //Update ao estado. UpdateSprite(gameTime); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); // Desenhar a bola spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null); spriteBatch.Draw(MyBot, spritePosition, Color.White); spriteBatch.End(); base.Draw(gameTime); } } } |
Na realidade isto nem pode ser considerado um jogo é mais uma animação em que uma imagem carregada, neste caso uma bola, se movimenta pela área da tela em que as colisões com as extremidades da tela fazem com que esta mude de direcção.
O próximo passo é fazer a movimentação da bola usando o comandos do utilizador através do teclado.
Share



Dezembro 14th, 2012 at 12:00 pm
[…] seguimento dos posts anteriores sobre a Minhas experiências com XNA Game Studio 4.0 venho hoje mostrar os meus avanços no que toca a programação usando esta framework e a linguagem […]