[XNA] Movendo um sprite na tela com o teclado
Neste rápido tutorial você verá como mover um sprite pela tela. Vamos começar então ?
Passo 1: Inicie um novo projeto e chame-o de MeuPrimeiroMovimento, e copie a imagem abaixo para dentro da pasta Content do projeto. E adicione a imagem ao projeto do jogo.

fantasma.png
Passo 2: Faça as seguintes declarações na classe principal do jogo (“Game1.cs”)
namespace MeuPrimeiroMovimento
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
// Textura que vai ser desenhada na tela
Texture2D fatasma;
// Posicao da textura na tela. x = 100, y = 100
Vector2 position = new Vector2(100, 100);
// Teclado a ser usado
KeyboardState keysboardState;
// A velocidade que vamos movimentar a textura
float speed = 5.0f;
.
.
.
Passo 3: Carregue a textura (imagem) no método LoadContent()
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
// Carregando a textura do fastama .PNG
fantasma = Content.Load<Texture2D>("fantasma");
}
Passo 4: No método Update(GameTime gameTime), vamos inserir toda lógica de movimento do sprite
protected override void Update(GameTime gameTime)
{
// Declaramos o teclado
keysboardState = Keyboard.GetState();
// Tecla para cima
if (keysboardState.IsKeyDown(Keys.Up))
{
position.Y -= speed;
}
// Tecla para baixo
if (keysboardState.IsKeyDown(Keys.Down))
{
position.Y += speed;
}
// Tecla para esquerda
if (keysboardState.IsKeyDown(Keys.Left))
{
position.X -= speed;
}
// Tecla para direita
if (keysboardState.IsKeyDown(Keys.Right))
{
position.X += speed;
}
base.Update(gameTime);
}
Passo 5: Vamos desenhar o sprite no método Draw(GameTime gameTime)
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(fantasma, position, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
Pronto, agora é só executar o programa e ver o resultado.

Segue código completo do tutorial:
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;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
<pre>namespace MeuPrimeiroMovimento
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
// Textura que vai ser desenhada na tela
Texture2D fatasma;
// Posicao da textura na tela. x = 100, y = 100
Vector2 position = new Vector2(100, 100);
// Teclado a ser usado
KeyboardState keysboardState;
// A velocidade que vamos movimentar a textura
float speed = 5.0f;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
// Carregando a textura do fastama .PNG
fantasma = Content.Load<Texture2D>("fantasma");
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
// Declaramos o teclado
keysboardState = Keyboard.GetState();
// Tecla para cima
if (keysboardState.IsKeyDown(Keys.Up))
{
position.Y -= speed;
}
// Tecla para baixo
if (keysboardState.IsKeyDown(Keys.Down))
{
position.Y += speed;
}
// Tecla para esquerda
if (keysboardState.IsKeyDown(Keys.Left))
{
position.X -= speed;
}
// Tecla para direita
if (keysboardState.IsKeyDown(Keys.Right))
{
position.X += speed;
}
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(fantasma, position, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
Você pode fazer o download do projeto completo aqui.
Abraços e até a próxima.


