Ya vimos en el post la estructura de un proyecto XNA en blanco, revisamos sus métodos y tuvimos la vertiginosa experiencia(jaja) de verlo funcionando.
Pues bien, en esta ocasión haremos algo un poco menos abúlico y se trata de colocar una imagen de fondo.
Me he valido para esto de unas imágenes y código que están en los proyectos de de la guía para principiantes del sitio de XnaCreators. Este sitio, que por cierto está buenísimo, introduce al desarrollo de juegos tanto en 2D como en 3D por medio de una serie de videos que están muy bien explicados, aunque en inglés lo que para algunos puede ser un poco incómodo.
Siguiendo elejemplo de XnaCreators he decidido presentar lo hecho en los videos que dejo a continuación.
LISTA DE VIDEOS
Les contaré que para grabar estos videos he usado una herramienta que me ha recomentado mi buen amigo Maic, se trata de JING, de los mismos creadores de Camtasia. Excelente y gratuita.
El código que contiene la clase Game1.cs de nuestro anterior proyecto en blanco, luego de este ejemplo es el siguiente:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using Microsoft.Xna.Framework;
5: using Microsoft.Xna.Framework.Audio;
6: using Microsoft.Xna.Framework.Content;
7: using Microsoft.Xna.Framework.GamerServices;
8: using Microsoft.Xna.Framework.Graphics;
9: using Microsoft.Xna.Framework.Input;
10: using Microsoft.Xna.Framework.Media;
11: using Microsoft.Xna.Framework.Net;
12: using Microsoft.Xna.Framework.Storage;
13:
14: namespace JuegoXNADemo1
15: {
16:
17: public class Game1 : Microsoft.Xna.Framework.Game
18: {
19: GraphicsDeviceManager graphics;
20: SpriteBatch spriteBatch;
21: Texture2D backgroundTexture;
22: Rectangle viewPortRect;
23:
24: public Game1()
25: {
26: graphics = new GraphicsDeviceManager(this);
27: Content.RootDirectory = "Content";
28: }
29:
30: /// <summary>
31: /// Allows the game to perform any initialization it needs to before starting to run.
32: /// This is where it can query for any required services and load any non-graphic
33: /// related content. Calling base.Initialize will enumerate through any components
34: /// and initialize them as well.
35: /// </summary>
36: protected override void Initialize()
37: {
38: // TODO: Add your initialization logic here
39:
40: base.Initialize();
41: }
42:
43: /// <summary>
44: /// LoadContent will be called once per game and is the place to load
45: /// all of your content.
46: /// </summary>
47: protected override void LoadContent()
48: {
49: // Create a new SpriteBatch, which can be used to draw textures.
50: spriteBatch = new SpriteBatch(GraphicsDevice);
51: backgroundTexture = Content.Load<Texture2D>("background");
52: viewPortRect = new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height);
53: // TODO: use this.Content to load your game content here
54: }
55:
56: /// <summary>
57: /// UnloadContent will be called once per game and is the place to unload
58: /// all content.
59: /// </summary>
60: protected override void UnloadContent()
61: {
62: // TODO: Unload any non ContentManager content here
63: }
64:
65: /// <summary>
66: /// Allows the game to run logic such as updating the world,
67: /// checking for collisions, gathering input, and playing audio.
68: /// </summary>
69: /// <param name="gameTime">Provides a snapshot of timing values.</param>
70: protected override void Update(GameTime gameTime)
71: {
72: // Allows the game to exit
73: if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
74: this.Exit();
75:
76: // TODO: Add your update logic here
77:
78: base.Update(gameTime);
79: }
80:
81: /// <summary>
82: /// This is called when the game should draw itself.
83: /// </summary>
84: /// <param name="gameTime">Provides a snapshot of timing values.</param>
85: protected override void Draw(GameTime gameTime)
86: {
87: GraphicsDevice.Clear(Color.CornflowerBlue);
88:
89: spriteBatch.Begin();
90: spriteBatch.Draw(backgroundTexture,viewPortRect,Color.White );
91: spriteBatch.End();
92:
93: // TODO: Add your drawing code here
94:
95:
96: base.Draw(gameTime);
97: }
98: }
99: }
Nuevamente y como siempre, saludos y gracias por darse el tiempo de leer este blog y que(como diría don Raúl Guerrero) nunca les falte "la pasión del desarrollador".
Manuel Gatica Holtmann
No hay comentarios:
Publicar un comentario