Lua Academy · Lección

Dibujar formas e imágenes

Muestre gráficos en pantalla

Lección 2 de 413 pasos

Dibujar formas e imágenes es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.

El módulo love.graphics

Todo el renderizado de LÖVE se realiza mediante love.graphics. Llame a sus funciones dentro de love.draw; el motor muestra el fotograma cuando termina el callback.

Puede dibujar formas primitivas, imágenes, texto y líneas, además de gestionar colores y transformaciones. Todo se vuelve a dibujar desde cero en cada fotograma.

Dibujar rectángulos

love.graphics.rectangle recibe un modo y, después, la posición y el tamaño. El modo puede ser 'fill' para una forma sólida o 'line' para dibujar solo el contorno.

Las coordenadas comienzan en la esquina superior izquierda de la ventana; x aumenta hacia la derecha e y aumenta hacia abajo.

function love.draw()
  love.graphics.rectangle('fill', 50, 50, 120, 80)
  love.graphics.rectangle('line', 200, 50, 120, 80)
end

Círculos y elipses

love.graphics.circle(mode, x, y, radius) dibuja un círculo centrado en x, y. Al igual que los rectángulos, acepta 'fill' o 'line'.

Para dibujar óvalos, use love.graphics.ellipse con radios horizontal y vertical independientes. Puede pasar un argumento adicional de segmentos para controlar la suavidad.

function love.draw()
  love.graphics.circle('fill', 150, 150, 40)
  love.graphics.ellipse('line', 300, 150, 60, 30)
end

Establecer colores

love.graphics.setColor establece el tinte de todo lo que se dibuje después. En las versiones modernas de LÖVE, los componentes van de 0 a 1, por lo que el blanco es 1, 1, 1.

El color es un estado persistente: una vez establecido, se aplica a todos los dibujos posteriores hasta que vuelva a cambiarlo. Restablézcalo al blanco antes de dibujar imágenes que quiera mostrar sin tinte.

function love.draw()
  love.graphics.setColor(1, 0, 0)   -- red
  love.graphics.rectangle('fill', 20, 20, 60, 60)
  love.graphics.setColor(1, 1, 1)   -- back to white
end

Líneas y puntos

love.graphics.line conecta una serie de puntos x, y. love.graphics.setLineWidth controla el grosor de las líneas y las formas contorneadas.

Puede pasar muchos puntos a la vez para dibujar una trayectoria conectada, lo que resulta práctico para estelas, recorridos o dibujos vectoriales sencillos.

function love.draw()
  love.graphics.setLineWidth(3)
  love.graphics.line(10, 10, 80, 60, 150, 20)
end

Cargar una imagen

Cargue las imágenes una sola vez en love.load mediante love.graphics.newImage. Esto devuelve un objeto Image que debe guardar en una variable para reutilizarlo.

No cargue nunca imágenes dentro de love.draw, ya que eso volvería a leer el archivo en cada fotograma y perjudicaría gravemente el rendimiento.

function love.load()
  sprite = love.graphics.newImage('player.png')
end

Dibujar una imagen

love.graphics.draw(image, x, y) renderiza una imagen en la posición indicada. De forma predeterminada, la esquina superior izquierda de la imagen se sitúa en x, y.

Los argumentos adicionales permiten añadir rotación, escala y desplazamiento del origen, lo que proporciona un control total sobre la apariencia de cada sprite.

function love.draw()
  love.graphics.draw(sprite, player.x, player.y)
end

Rotación y escalado

La signatura completa es draw(image, x, y, r, sx, sy, ox, oy). Aquí, r es la rotación en radianes, y sx y sy son factores de escala.

El desplazamiento del origen ox, oy establece el pivote. Para rotar alrededor del centro de una imagen, establezca el origen en la mitad de la anchura y la altura de la imagen.

local w, h = sprite:getWidth(), sprite:getHeight()
love.graphics.draw(sprite, x, y, angle, 1, 1, w/2, h/2)

Dibujar texto

love.graphics.print(text, x, y) dibuja una cadena usando la fuente actual. love.graphics.setFont cambia la fuente activa.

Cree fuentes personalizadas con love.graphics.newFont('font.ttf', 24) en love.load. Recuerde que el color también tiñe el texto, igual que las figuras.

function love.draw()
  love.graphics.setColor(1, 1, 1)
  love.graphics.print('Score: ' .. score, 10, 10)
end

Borrado y fondo

LÖVE borra la pantalla automáticamente en cada fotograma, pero puede establecer el color de borrado con love.graphics.setBackgroundColor en love.load.

Para obtener control manual dentro de un renderizado personalizado, love.graphics.clear rellena el búfer con un color. La mayoría de los juegos solo establece el fondo una vez y deja que el motor se encargue del borrado.

function love.load()
  love.graphics.setBackgroundColor(0.1, 0.1, 0.2)
end

Quads para hojas de sprites

Un Quad selecciona una región rectangular de una imagen, lo que permite que una sola hoja de sprites contenga muchos fotogramas. Créelo con love.graphics.newQuad.

Pase el quad a love.graphics.draw(image, quad, x, y) para renderizar únicamente esa región. Esta es la base de la animación de sprites.

local sheet = love.graphics.newImage('sheet.png')
local frame = love.graphics.newQuad(0, 0, 32, 32, sheet:getDimensions())
-- love.graphics.draw(sheet, frame, x, y)

Comprobación rápida

Compruebe sus conocimientos sobre el dibujo en LÖVE.

Repaso

Dibuje con love.graphics dentro de love.draw: rectángulos, círculos, líneas, imágenes y texto. setColor tiñe los dibujos posteriores y mantiene su estado.

Cargue las imágenes una sola vez en love.load con newImage y, después, renderícelas con draw, añadiendo rotación, escala y quads para las hojas de sprites.

Gratis para empezar

Aprende Lua con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
40
Lecciones
159

Preguntas frecuentes

¿La lección «Dibujar formas e imágenes» es gratis?

Sí — el texto completo de «Dibujar formas e imágenes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Dibujar formas e imágenes»?

Muestre gráficos en pantalla Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Lua Academy?

No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Dibujar formas e imágenes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Lua Academy?

Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El bucle de juego de LOVE
  2. Dibujar formas e imágenes
  3. Gestionar la entrada
  4. Movimiento y colisiones
← Volver a Lua Academy