love2d雜記3 滑鼠拖動和線條輝光

2022-05-22 16:21:07 字數 2270 閱讀 9952

來自老外部落格,滑鼠拖動原文鏈結,發光效果原文鏈結。

滑鼠拖動

這個就是檢測滑鼠是否在繪圖區域按下,還要注意拖動時的座標要減去

滑鼠座標與繪圖區左頂點的差值。

function love.load

() rect =

}end

function

love.update(dt)

if rect.dragging.active then

rect.x = love.mouse.getx() -rect.dragging.diffx

rect.y = love.mouse.gety() -rect.dragging.diffy

endendfunction

love.draw()

love.graphics.rectangle(

"fill

", rect.x, rect.y, rect.width, rect.height)

endfunction

love.mousepressed(x, y, button)

if button == "l"

and x > rect.x and x < rect.x +rect.width

and y > rect.y and y < rect.y +rect.height

then

rect.dragging.active = true

rect.dragging.diffx = x -rect.x

rect.dragging.diffy = y -rect.y

endendfunction

love.mousereleased(x, y, button)

if button == "l"

then rect.dragging.active = false

endend

線條輝光

簡譯:最近我嘗試找到love2d來實現線條輝光(原文make lined shapes glow),或許有其它方式,下面是我想到的。

love.graphics.setcolor(r, g, b, 15

)for i = 7, 2, -1

doif i == 2

then

i = 1

love.graphics.setcolor(r, g, b,

255)

endlove.graphics.setlinewidth(i)

--draw lined shape here

end

上面的**多次繪圖,每次使用不同的線條寬度i。 一共繪製六次,每次的線條寬度為7, 6, 5, 4, 3, 1.

除了最後一次外,線條的alpha被設為15(最後一次是255).love預設alpha重疊,對線條來說顏色會越來越深,

就產生了輝光的效果。  最後一條線的alpha 是255,作為光源。

下面我把上面的想法寫成了函式glowshape,你可以自己測試想要的效果。

最後你需要檢測機器是否支援framebuffer,若支援就使用,這會提高很大的速度。

完整的**為:

function glowshape(r, g, b, type

, ...)

love.graphics.setcolor(r, g, b, 15)

for i = 7, 2, -1

doif i == 2

then

i = 1

love.graphics.setcolor(r, g, b,

255)

endlove.graphics.setlinewidth(i)

iftype == "

line

"then

love.graphics[

type

](...)

else

love.graphics[

type]("

line

", ...)

endend

endfunction

love.draw()

glowshape(

255, 0, 0, "

rectangle

", 200, 100, 100, 100

) glowshape(

0, 255, 0, "

polygon

", 300, 300, 310, 330, 350, 290, 360, 310, 290, 350

)end

使用 Love2D 開發遊戲

love2d是一款讓開發者可以使用lua語言進行開發的2d遊戲框架,免費且開源。其官網上有詳細的介紹與手冊,但需要科學上網且為全英文。love2d國外的開發者社群比較活躍,但國內的資料就比較少了,可能會有語言障礙。但lua語言本身的簡潔性加上框架的輕量級,英文的社群和手冊其實也很好理解。pico 8...

love2d教程28 血條

感謝朱大仙提供的 這才有了這篇部落格。血條 至於體力 法力都是類似的 是遊戲裡常用的gui控制項,它主要實現兩個功能 增加 減少。效果如圖 沒有錄製gif 血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,同時這個也是乙個quad的序列圖,用它來組成...

love2d教程28 血條

感謝朱大仙提供的 這才有了這篇部落格。血條 至於體力 法力都是類似的 是遊戲裡常用的gui控制項,它主要實現兩個功能 增加 減少。效果如圖 沒有錄製gif 血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,同時這個也是乙個quad的序列圖,用它來組成...