Ir al contenido principal

Quiéres estos diseños en tu ropa o en diferentes productos?

Publicidad

Como usar el ratón con Love2D


 

Hola a todos, hoy nos toca conocer como usar el ratón dentro de nuestros juegos desarrollados con Love2D. Y como es común con este motor de juegos, lograr esto es bastante sencillo. Al igual que con el teclado, tenemos funciones que podemos usar dentro de update() y otras que no, son funciones del tipo draw(), update() y load() y por lo tanto no pueden ser usadas dentro de otras.

Estas funciones son:

function love.mousemoved(x,y,dx,dy,istouch)
function love.mousepressed(x,y,button,istouch,presses)
function love.mousereleased(x,y,button,istouch,presses)
function love.wheelmoved(x,y)

Los parámetros "x", "y" indican la posición del ratón al momento de ser llamada la función. En wheelmoved() "x","y" toman valores de 1, -1, "x" es para movimientos horizontales, "y" para verticales como en la mayoría de los ratones que poseen la rueda entre los botones.
 
En la función mousemoved() "dx","dy" indican la cantidad recorrida por el ratón desde la última vez que se llamó a la función.

El parámetro "button" toma valores de 1 para el botón primario, 2 para el secundario y 3 para el botón central.

Para conocer si el botón presionado fue originado por una pantalla sensible al tacto, tenemos el parámetro "istouch" que devuelve true o false.

"Presses" índica cuantas veces fue presionado el botón dentro de un corto tiempo y un espacio pequeño. Útil para simular doble o triples clics.

Estos son todos los parámetros de estas funciones, ahora vamos a ver un ejemplo que permita visualizar el uso de la mayoría de ellas

En este ejemplo se cargará una imagen a la cual se le permitirá moverse a la posición del cursor del ratón al hacer clic con cualquiera de los botones, y al momento de liberar el botón permanecerá en el lugar donde quede el cursor, también se creara un rectángulo el cual aumentará o disminuirá su ancho al girar la rueda de ratón, También se mostrará un texto en pantalla informando de las acciones del ratón que se realicen.

function love.load()
     imagen = love.graphics.newImage("recursos/imagen.png")
     imgx = 100
     imgy = 100
     rectw = 1
     clic = false
     texto = ""
end

function love.mousepressed(x,y,button,istouch,presses)
     if button = 1 or 2 then
         clic = true
         imgx = x
         imgy = y
         texto = "Boton "..button.." pressed ".." | istouch: "..tostring(istouch).." | presses: "..presses
     end
end

function love.mousereleased() if button = 1 or 2 then
     clic = false
     texto = "Boton "..button.." released ".." | istouch: "..tostring(istouch).." | presses: "..presses
     end
end

function love.mousemoved(x,x,dx,dy,istouch)
     if clic == true then
         imgx = x
         imgy = y
     end
end

function love.wheelmoved(x,y)
     if y > 0 and rectw < 100 then
         rectw = rectw + 1
         texto = "rueda aumenta"
     end
     if y < 0 and rectw > 1 then
         rectw = rectw - 1
         texto = "rueda disminuye"
     end
end

function love.update(dt)

end

function love.draw()
     love.graphics.draw(imagen,imgx,imgy)
     love.graphics.rectangle("fill",10,10,rectw,10)
     love.graphics.print(texto,10,300)
end

En el código anterior cargamos la imagen desde nuestra carpeta de recursos, iniciamos la posición de esta, el ancho inicial del rectángulo y la variable "clic" que nos permitirá saber cuando se presione algún botón, y la variable "texto" donde colocaremos los cambios que sucedan al manipular el ratón. En la función "mousepressed" tan pronto presionemos alguno de los botones cambiamos el estado de la variable "clic" y colocamos la imagen en la posición del puntero del ratón, en "mousereleased" cambiamos a "false" la variable "clic" puesto que ya no se tiene ningún botón presionado, en "mousemoved" actualizamos continuamente las variables de posición de la imagen, y en "wheelmoved" usamos solamente el parámetro "y" para verificar los cambios de la rueda del ratón que es el más común, pero con eso entenderás como usar el otro parámetro si lo necesitas.

Veamos el resultado:


 

También es útil poder saber qué botón del ratón está presionado desde update(), dentro del módulo love.mouse hay varias funciones que nos permiten controlar el ratón y love.mouse.isDown(button,..) permite verificar si el número del botón pasado como parámetro está presionado, devolviendo true o false.

Por ejemplo:


function love.update(dt)
     if love.mouse.isDown(1) then
         hacerAlgo()
     end
     if love.mouse.isDown(2,3) then
         hacerOtra()
     end
end

Puedes pasar solo un número o varios separados por comas, ya sabes que estos números indican el botón que se presione y que queremos verificar.

Es todo por ahora, pronto traeré más información respecto a Love2D y si te fue útil alguna de mis publicaciones, puedes suscribirte y recibir por correo notificaciones cuando publique nuevo contenido en la página, y si no es mucha molestia compártelo, ¡gracias!.

Comentarios

  1. Muchas gracias por los tutoriales. Vienen bárbaro. Hay cosas que no entiendo todavía, estoy aprendiendo desde un móvil. Viendo los tutoriales de sheppolution,pude hacer un míni juego.El problema empieza cuando quiero usar la librería classic.lua si creo una clase personaje y quiero agregarle movimiento del touch a Personaje:update() no se como llamar a la función love.touch.getTouches()

    ResponderEliminar
    Respuestas
    1. Me alegra que te sirvan los tutoriales, he estado ocupado y no he podido seguir con ellos, pero pronto planeo volver a publicar mas contenido

      Eliminar

Publicar un comentario