-
Mar11No Comments
El conocido framework para la creación de videojuegos de Microsoft va a verse próximamente actualizado a una nueva versión. En la nueva versión 4.0, Microsoft da soporte para juegos en smartphones que funcionen con Windows Phone 7, ampliando así las plataformas soportadas por XNA (Windows Phone 7, PC, Xbox360). Sin embargo, parece que deja de ser compatible con el reproductor musical Zune HD, el cual seguirá soportando solo hasta la versión 3.1 de XNA.
La característica más interesante de esta nueva plataforma es la posibilidad de continuar las partidas de nuestros juegos en cualquier plataforma. Por ejemplo, podríamos estar guardar una partida en PC y continuarla desde nuestro teléfono móvil mientras estamos en el autobús.
Alguna de las otras novedades que trae consigo el XNA Game Studio 4.0 son: API’s con aceleración 3D por Hardware para Windows Phone 7 Series, Intregración con Visual Studio 2010, y Soporte de “buffered audio” en API’s de audio.
Más información: http://creators.xna.com/en-US/news/gdc2010
-
Mar1No Comments
Ya hacia tiempo que no escribía nada sobre XNA. Así que voy a escribir un cortito (pero útil) tutorial de como hacer Parallax Scroll en XNA.
Es muy facilito, y además de dejaros el código fuente del proyecto, os dejare también las imágenes y una explicación del código para que lo hagáis vosotros.
IMAGENES
Pinchar sobre la imagen, se os abrirá una nueva ventana. Guardaros esa imagen.
http://nosoyfriky.es/cosasxna/rocas.png
http://nosoyfriky.es/cosasxna/espacio.png
http://nosoyfriky.es/cosasxna/planeta.png
CLASE CapaParallax
Como podemos ver, esta clase tan simple representa una capa del fondo, el cual tiene una velocidad determinada, así como una textura.
1 class CapaParallax
2 {
3 private Texture2D textura = null;
4 private Vector2 posicion = Vector2.Zero;
5 private Vector2 desplazamiento = Vector2.Zero;
6 private float velocidad = 10.0f;
7
8 private float viewportWidth = 0.0f;
9
10
11 /// <summary>
12 /// Constructor de la capa de parallax Scrolling
13 /// </summary>
14 /// <param name="graphics">Donde se dibujara la capa</param>
15 /// <param name="texture">Textura de la capa</param>
16 /// <param name="speed">Velocidad con la que se movera la capa</param>
17 public CapaParallax(GraphicsDeviceManager graphics, Texture2D texture, float speed)
18 {
19 textura = texture;
20
21 viewportWidth = graphics.GraphicsDevice.Viewport.Width;
22
23 posicion = new Vector2(0.0f, 0.0f);
24 desplazamiento = new Vector2(viewportWidth, 0.0f);
25
26 velocidad = speed;
27 }Para el funcionamiento del parallax, necesitamos que cada capa se mueva a una velocidad distinta. Cuanto más rápido sea el movimiento, nos parecerá que esta más próxima la capa.
30 /// <summary>
31 /// Actualiza la posicion de la capa
32 /// </summary>
33 /// <param name="gameTime">Tiempo transcurrido de juego</param>
34 public void Update(GameTime gameTime)
35 {
36
37
38
39 float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
40
41 posicion.X -= velocidad * delta;
42 posicion.X = posicion.X % textura.Width;
43
44 }
45
46
47 /// <summary>
48 /// Da la sensacion de que nos movemos a la derecha
49 /// </summary>
50 /// <param name="gameTime"></param>
51 public void MoverDerecha(GameTime gameTime)
52 {
53 float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
54
55 posicion.X -= velocidad * delta;
56 posicion.X = posicion.X % textura.Width;
57 }
58
59 /// <summary>
60 /// Da la sensacion de que nos movemos a la izquierda
61 /// </summary>
62 /// <param name="gameTime"></param>
63 public void MoverIzquierda(GameTime gameTime)
64 {
65 float delta = (float)gameTime.ElapsedGameTime.TotalSeconds;
66
67 posicion.X += velocidad * delta;
68 posicion.X = posicion.X % textura.Width;
69 }
70
71
72 /// <summary>
73 /// Dibuja la capa
74 /// </summary>
75 /// <param name="spriteBatch"></param>
76 public void Draw(SpriteBatch spriteBatch)
77 {
78 //Como es una capa "continua", tenemos que dibujarla
79 // otra vez cuando se salga de la pantalla
80
81 if (posicion.X < viewportWidth)
82 {
83 spriteBatch.Draw(textura, posicion, Color.White);
84 }
85
86 spriteBatch.Draw(textura, posicion + desplazamiento, Color.White);
87 }
88 }GAME1.CS
Con esta clase ya implementada, tenemos que agregar en nuestro juegos las diferentes capas que queramos y almacenarlas todas en una lista.
1 //Texturas de las capas
2 private Texture2D planeta;
3 private Texture2D espacio;
4 private Texture2D rocas;
5
6 private List<CapaParallax> capasParallax;O bien en el constructor o bien en en metodo “Initialize” tenemos que crear las capas:
1 protected override void Initialize()
2 {
3 // TODO: Add your initialization logic here
4 planeta = this.Content.Load<Texture2D>("planeta");
5 rocas = this.Content.Load<Texture2D>("rocas");
6 espacio = this.Content.Load<Texture2D>("espacio");
7
8
9 //Cuidado con el orden de insercion.
10 //1º lo mas alejado
11 capasParallax = new List<CapaParallax>();
12 capasParallax.Add(new CapaParallax(graphics, planeta, 0.0f)); //la velocidad es 0, no se mueve
13 capasParallax.Add(new CapaParallax(graphics, espacio, 10.0f));
14 //luego lo mas cercano
15 capasParallax.Add(new CapaParallax(graphics, rocas, 50.0f));
16
17 base.Initialize();
18 }En el update tan facil como:
1 foreach (CapaParallax capa in capasParallax)
2 {
3 capa.Update(gameTime);
4 }y lo mismo en el metodo Draw:
1 foreach (CapaParallax capa in capasParallax)
2 {
3 capa.Draw(spriteBatch);
4 } -
Ene10No Comments
Navegando por Codeplex me he encontrado un proyecto muy interesante. Se trata de un Engine de partículas para XNA. ¿Qué para qué sirve? Pues por ejemplo, para hacer el humo del barco de abajo
Para explosiones como esta:
O para simular nieve en nuestro juego:
No lo he podido probar mucho, pero parece que es simple de usar y se pueden conseguir resultados realmente buenos, además de contar con una documentación bastante amplia y con ejemplos.
La web del proyecto en Codeplex es: http://mpe.codeplex.com/
Os dejo con un video para que veáis lo que se puede hacer. Bastante curioso.
-
Dic31No Comments
Llegados a este punto, tenemos nuestra nave frente a unas cuantas naves enemigas. Nuestra nave puede disparar y eliminar a los enemigos, pero los enemigos todavía no pueden dispara para intentar eliminarnos. Vamos a ver como podemos hacer esto después del salto.
Como ya sabéis, si tenéis alguna duda, podéis plantearla en el foro: http://www.foro.xna-tutorial.com/viewtopic.php?f=4&p=8#p8
-
Dic28No Comments
XNA facilita muchísimo la programación de videojuegos. proporciona librerías para cargar imágenes 2D, modelos 3D, sonidos, etc.…
Sin embargo, algo tan simple como dibujar primitivas 2D, tales como círculos, líneas, cuadrados, elipses… se convertía en algo más complejo de lo deseable.
Por ello me puse a buscar por internet como dibujar primitivas 2D y encontré en los foros de XNA la solución: una clase que facilita la creación de estos elementos.

Este es un ejemplo de lo que se puede hacer con esta clase: pintar círculos, cuadrados, elipses, líneas, modificar el color, el grosor, la posición, la rotación, etc.…. y todo ello de una forma rápida y sencilla. ¿Que más se puede pedir?
Descárgate el proyecto de ejemplo desde http://nosoyfriky.es/cosasxna/Primitivas2D.rar. Si solo te interesa la clase, descárgate el código fuente de la clase desde: http://nosoyfriky.es/cosasxna/BasicPrimitives.cs
Un saludo
-
Dic21No Comments
Mirando en los foros de XNA me he encontrado con este topic: http://forums.xna.com/forums/t/34901.aspx
En el se ofrece el código fuente de un juego basado en el Starter Kit de plataformas que viene incluido con XNA a partir de la versión 3.0.
Contiene numerosas mejoras para partir de el para hacer un juego de plataformas en XNA.
Características:
- Game State Management (Menu)
- Global Score
- Scrolling levels (vertical and horizontal)
- Custom level information from within the text file (Title, Time Limit, Description)
- Level Select
- Falling Apples
- Options
- Built in BSOD (incase any error happens you can see what it is)
- In Game Level Editor (Beta, saving part under progress)
- Ladders
- option for 320×240 or 640×480 (in the ScreenManager.cs, "Game Configuration Fields" region near top, set the "useHighResolution" to true or false)
- A Racing opponent (Turns directions by bumping into walls, Jumps on assigned "J" tiles)
- Vanishing Tiles
- Hidden Tiles (Both Solid and platform)
- Death Tiles
- Skin selections
- Powerups
El código fuente lo podéis descargar desde el enlace que proporciona el creador: http://www.mediafire.com/?ydyzwtilmkc

Últimos Comentarios