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.

Related Posts Plugin for WordPress, Blogger...Share

One Response to “Animar uma Imagem em XNA Game Studio 4.0”

  1. […] 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 […]

Leave a Reply