Dibujar formas e imágenes
Muestre gráficos en pantalla
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)
endCí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)
endEstablecer 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
endLí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)
endCargar 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')
endDibujar 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)
endRotació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)
endBorrado 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)
endQuads 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.
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
- El bucle de juego de LOVE
- Dibujar formas e imágenes
- Gestionar la entrada
- Movimiento y colisiones