Que duro es ser informático Los grandes artistas copian, los genios roban
  • Mar
    1

    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.

     

    image

     

    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

    image

    http://nosoyfriky.es/cosasxna/espacio.png

    image

    http://nosoyfriky.es/cosasxna/planeta.png

    image

     

    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             }

     

     

     

    Descargar Código Fuente del Proyecto

    No Comments
  • Feb
    24

     

    image

     

    Si es que no aprendo. Me he vuelto a meter yo solito en otro lio. Resulta que ahora voy a dar un taller sobre Windows Forms. Será el proximo día 5 de marzo a las 11. Os dejo con más datos y con en enlace:

     

    Aprende a crear aplicaciones para Windows desde cero. Camilo Galiana, quien también impartió el "Webcast C# para programadores de C++ y Java", se dispone ahora a hacer una clase práctica para enseñarnos a crear aplicaciones de escritorio en el sistema operativo Windows.

    Fecha: Viernes, 05 de marzo de 2010

    Hora: 11:00 – 13:00

    Lugar: Edificio EPS 1 – Laboratorio L26

     

    Enlace: http://alicante.dotnetclubs.com/eventos/talleres/taller-windows-forms-aprende-a-crear-aplicaciones-para-windows/

     

    Lo más “fuerte” es que ya no quedan plazas. Se supone que asistirán unas 30 personas, pero no creo que vayan todas. Si te has quedado sin plaza y te gustaría asistir, puedes pasarte por el laboratorio unos minutos antes de empezar que seguro que hay plazas libres.

     

    Un saludo

    No Comments
  • Feb
    22

    No me gusta el Eclipse. No me gusta nada. Más bien, se podría decir que lo odio. ¿Por qué? Pues por cosas como estas:

    image

     

    El error es tan descriptivo que no se ni siquiera por qué peta. “El sistema no puede encontrar la ruta especificada”. ¿¿La ruta de qué?? Me caguen’ti, Eclipse.

    Un proyecto que hace 1 día funcionaba sin problemas, y ahora de la noche a la mañana, sin tocar NADA, petas? Como diría “Marcial”: “Veste a la meirdaaaaaaaaaaaa”

    Eclipse: Veste a la mierda!!!!!!!

     

    Así que me ha tocado borrar el Eclipse y volver a instalar todo, configurarlo y cargar los proyectos que tenia antes. El Netbeans no saba tantos problemas!

    1 Comment
  • Feb
    20

    image

    Ayer me compre, junto con R2d2rigo, la primera entrega de la nueva promoción de Ubisoft. Por 10€, me compré los siguientes juegos:

    Far Cry 2: Fortune’s Edition: 30€

    Splinter Cell: Chaos Theory: 10€

    World in conflic + expansion: 30€ + 15€

     

    En total hubiera salido por unos 85€ (comprando todos los juegos por Steam, que es de donde he mirado los precios), y de esta forma salen los 3 por 10€. Lo veo una muy buena oferta.  Además, todos los juegos vienen con sus claves para jugar online.

    Hay gente que dirá: pues vaya juegos más malos. Bueno, puede que no sean lo mejor de lo mejor, pero como iniciativa está muy bien. A ver si las demás compañías toman ejemplo, jejeje

    Es que si los juegos fueran más baratos, más gente compraría juegos originales.

     

    Toda la colección en http://www.codegamecoleccion.com/

    No Comments
  • Feb
    10

    Ipad vs TeleSketch

    Filed under: Frikismo, Humor, Internet; Tagged as: ,

    Que no estaba muerto, que solo estaba de parranda, XD

    En mi ausencia, fue presentado el iPad. Iba a ser una revolución. Esperaremos a ver como acaba, pero no le veo mucho futuro yo al trasto este. Y viendo cosas como esta, parece que no soy el único:

    image

     

    FUENTE: http://www.geekool.com

    1 Comment
  • Feb
    2

    Estoy pensando en irme de Erasmus el año que viene. Asi que me he pueto a hacer un mapa con los destinos a donde me puedo ir. Es solo para informatica del año 2010, pero a lo mejor os srive.

    La url del mapa es: http://maps.google.es/maps/ms?f=q&source=s_q&hl=es&geocode=&ie=UTF8&msa=0&msid=118131694586991893817.00047e9f9151d16d009ca&ll=52.268157,14.985352&spn=21.376829,64.467773&z=5

    image

    Un saludo

    1 Comment
  • Ene
    31

    Mario vs Sonic

    Filed under: Humor; Tagged as: , ,

    Y tu, ¿a quién prefieres?

     

    Por cierto, el video es de la web de “El Jueves

    No Comments
  • Ene
    28

    Ya está disponible para descargar el video del webcast de ayer. Para poder verlo o descargarlo, tenéis que meteros en este enlace: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032438966&Culture=es-ES

     

    Recordar que los materiales podéis bajarlos de aquí: http://nosoyfriky.es/pub/WebcastSOLUCION.zip

     

    Un saludo

    No Comments
  • Ene
    27

    Se acerca la hora del webcast y para aquellos que quieran, voy a dejar los materiales con los que voy a hacer el webcast.

    http://nosoyfriky.es/pub/Materiales.zip

    En este fichero tienes:

    • Diapositivas usadas en el webcast .
    • Plantilla C# para el programa que vamos a hacer, que ya os adelanto que va a ser una agenda de contactos para gestionar tus amigos, ;- D

     image

     

    De todas formas, te recomiendo estar atento a la explicación y depuse que te pongas tu poco a poco a hacer lo mismo que he hecho yo en el webcast. Lo digo porque si te pones a picar código mientras explico, posiblemente te pierdas. 

    ********************************************************************************************************************

    Además, por si no quieres esperar, también te dejo disponible este otro archivo:

    http://nosoyfriky.es/pub/WebcastSOLUCION.zip

    En este otro tienes:

    • Diapositivas usadas en el webcast con anotaciones.
    • Código fuente de la agenda comentada.

      Si tienes alguna duda, puedes enviarme un mail a la dirección de correo que aparece en las diapositivas o bien usando este formulario de contacto. También puedes proponerme otro tema para futuros webcast, como “Windows Forms”, “Acceso a Base de Datos”, etc…. y veré que se puede hacer.

       

      Un saludo.

      No Comments
    • Ene
      25

      Para la gente que no lo supiera, estoy inscrito en el concurso de blogs de la UA. Si te gusta mi blog, o si eres amigo, o simplemente lo haces por  los Lacasitos, puedes votarme en esta web: http://blogs.ua.es/vota/

      Selecciona “No soy Friky” en la categoría “General”, escribe tu correo y dale a “Enviar votos”. Te enviaran un correo para confirmar el voto (vamos, para que no hayan trampas, o al menos trampas muy descaradas).

      image

      Puedes votar hasta 3 blogs, pero si quieres solo puedes votar a 1, o a 2.

      Gracias!

       

      PD: Si gano, recordarme lo de los Lacasitos, XD

      No Comments