Inicio > Games, Tips, XNA > [Tips – XNA] Escribir Texto en XNA

[Tips – XNA] Escribir Texto en XNA

Bien, el hacer esto realmente resulta muy sencillo gracias a los elementos con los que cuenta XNA y sobre todo esta versión, si recuerdan como cargar un Sprite que contiene una textura, se darán cuenta que con el texto es muy similar, solo que tenemos que manipular en un documento XML las propiedades con las que se dibujara nuestro texto, y bien como todo iniciamos con la declaración de nuestro objeto que es de la clase SpriteFont .

        //spritefotn para la velocidad
        SpriteFont velCamaroText;

Este spriteFont solo mostrará de manera textual lo que le indiquemos, para manipular las propiedades del texto debemos agregar dentro de nuestra carpeta Content nuestro elemento con extensión “.spriteFont” y lo hacemos dando clic derecho en la carpeta Content->Agregar nuevo elemento y seleccionamos un SpriteFont al que llamaremos “Velocidad”

image image

Al dar clic en Agregar automáticamente nos abre dicho documento llamado Velocidad.spriteFont el cual contiene varias propiedades, podemos observar que es un documento XML que tiene como referencia el namespace de Microsoft.Xna.Framework.Content.Pipeline.Graphics que nos facilita la manipulación de las propiedades del texto como nombre del Font, tamaño, estilo, el espacio, etc. El documento se ve así, en donde ya le cambie de nombre y tiene “Arial”.

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
  <Asset Type="Graphics:FontDescription">
    <FontName>Arial</FontName>
    <Size>14</Size>
    <Spacing>0</Spacing>
    <UseKerning>true</UseKerning>
    <Style>Regular</Style>
      <CharacterRegions>
      <CharacterRegion>
        <Start> </Start>
        <End>~</End>
      </CharacterRegion>
    </CharacterRegions>
  </Asset>
</XnaContent>

El manipular este documento resulta muy sencillo, el paso indicado es la carga de este srpiteFont que se hace de la misma manera que una textura, dentro del método de LoadContent() lo cargamos con esta instrucción:

    //carga del texto
    velCamaroText = Content.Load<SpriteFont>("Velocidad");

Ahora para poder verlo en pantalla solo falta dibujarlo, y esto al igual que los sprite’s de texturas en 2D lo hacemos con el spritebatch solo con el método DrawString, todo esto dentro del método protected override void Draw(GameTime gameTime) y queda de esta manera:

  //dibujamos el texto
  spriteBatch.DrawString(velCamaroText,
        "Aqui va la velocidad!", new Vector2(580,560), Color.Black);

Se observa que el texto a dibujar es el segundo parámetro que recibe el método DrawString(), así compilamos y ejecutamos, se puede observar algo como esto:

          image

Ok, ya sabemos cómo escribir Texto en XNA, ahora aprovechamos esto para colocar ahí la velocidad de nuestro “camaro”, para esto necesitamos declarar una variable que se llamara velocidadCamaro.

   int velocidadCamaro = 0;

Como ya tenemos la velocidad que se le asigna a nuestro camaro, solo falta mandarla a pantalla, porque ya en el método Update() tenemos una instrucción que lo hace, solo agregamos el incremento y lo asignamos para que se mueva el auto hacia arriba, el código queda así:

 
//mover el camaro hacia arriba
  else if (estadoTeclado0.IsKeyUp(Keys.Up) && estadoTeclado.IsKeyDown(Keys.Up))
  {
       velocidadCamaro++;
       posCamaro.Y -= velocidadCamaro;
       //limite del camaro hacia arriba
       if (posCamaro.Y < 0)
            posCamaro.Y = 0;
  }

Y para imprimirlo solo cambiamos el segundo parámetro del método DrawStrin() que tenía el texto “Aquí va le velocidad” por el de velocidadCamaro.ToString() y listo, se incrementara la velocidad y nuestro auto camina más rápido, entonces la instrucción de dibujar el texto de la velocidad queda así:

 

//dibujamos el texto

 spriteBatch.DrawString(velCamaroText, velocidadCamaro.ToString()+ "0 KM/h", new Vector2(580,560), Color.Black);

Si dejamos esto así, se observara un detalle, que consiste en que el contador se queda en su último valor, es decir; el que tenía hasta que se dejo de presionar la tecla de la flecha hacia arriba, para esto debemos ponerle un límite o regresarlo a cero, cuando el camaro frene, entonces podemos hacer lo siguiente.

//mover el camaro hacia arriba
 else if (estadoTeclado0.IsKeyUp(Keys.Up) && estadoTeclado.IsKeyDown(Keys.Up))
 {
    velocidadCamaro++;
    if (velocidadCamaro > 10)
         velocidadCamaro = 10;
    posCamaro.Y -= velocidadCamaro;
    //limite del camaro hacia arriba
    if (posCamaro.Y < 0)
         posCamaro.Y = 0;
 }

En donde incrementamos la velocidad, pero le colocamos un limite de 10, para que no vaya muy rapido el camaro, y asu vez cuando frene o el camaro vaya hacia abajo lo decrementamos y colocamos un limite en 0 de lamisma manera y queda así:

//mover el camaro hacia abajo
               else if (estadoTeclado.IsKeyDown(Keys.Down))
               {
                   velocidadCamaro -= 1; ;
                   if (velocidadCamaro < 0)
                       velocidadCamaro = 0;
                   posCamaro.Y += 3;
                   //limite del camaro hacia abajo
                   if (posCamaro.Y > 460)
                       posCamaro.Y = 460;

               }

Y ahora podemos manipular la velocidad de nuestro camaro como queramos, bien aquí termina esto del texto, adelante indicaremos como cargar el sonido de aceleración y manipularlo.

Categorías:Games, Tips, XNA
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: