15/5/14

[Tutorial] Dibujar formas (libGDX)

Buenas gente! En esta entrada vamos a ver como dibujar distintas formas en nuestra aplicación sin tener que usar texturas o imágenes. Para ello usaremos la clase ShapeRenderer que nos proporciona libGDX. Veamos cómo podemos usarla en nuestra aplicación.

Inicialización de variables


Simplemente tendremos que inicializar nuestra variable ShapeRenderer con un constructor vacío:


Esta misma variable nos servirá para dibujar rectángulos, círculos, arcos, conos, elipses, etc. En el siguiente apartado veremos como.

También deberás tener en algún lado la información de la posición x e y donde quieres dibujar la figura, su radio, color, etc. Esta información puedes guardarla en variables, pasárselas por función, o como te venga mejor para tu aplicación en concreto.

No olvides hacer el dispose( ) de la variable para liberar los datos de la variable al finalizar la aplicación o cuando vayas a dejar de usar la variable.

Dibujando la figura


Para dibujar nuestra figura iremos a nuestra función draw en donde pondremos el siguiente código:


La línea 3 solo es necesaria si quieres que tus formas tengan canal alfa, es decir, transparencias.

Al iniciar con begin(ShapeType) le puedes indicar como quieres que te dibuje la forma:

  • ShapeType.Line → Sólo dibujará la línea exterior.
  • ShapeType.Filled → Dibujará la forma rellena.

Después puedes indicarle el color con el que quieres que se dibujen las siguientes figuras (Si no has puesto la línea 3 dará igual el valor que pongas en el cuarto valor del color).

Después podrás dibujar las figuras que quieras como puedes ver en las líneas 8, 14, 20 y 25.

Estos son unos pocos ejemplos de todas las figuras que puedes hacer, si quieres ver todas las posibilidades, mira aquí.

En la función del círculo (línea 8) el último valor es opcional e indica el número de segmentos con los que se dibujará el círculo.

Por último, cierra el dibujado de figuras con la función end( ).

Puedes ejecutar el begin( ) / end( ) todas las veces que quieras para dibujar formas rellenas o solo con líneas.

Notas

  • No te olvides de hacer el dispose( ) del ShapeRenderer.
  • Si estás usando SpriteBatch o Stages tendrás que parar el SpriteBatch ( batch.end( ) ) antes de dibujar las figuras y volverlo a iniciar (batch.begin( ) ) tras dibujarlas todas.
  • La posición que les indicas para dibujar las figuras es la esquina inferior izquierda, no el centro de la figura.
  • El color que indiques se aplicará a las figuras que dibujes a partir de ahí. Si quieres una figura de otro color deberás llamar de nuevo a la función cada vez.
  • Con un número de segmentos bajo puedes utilizar la función de dibujar círculos para dibujar hexágonos, pentágonos, octógonos, etc.   

No hay comentarios:

Publicar un comentario