感謝網友朱大仙提供的**,這才有了這篇部落格。
血條(至於體力、法力都是類似的)是遊戲裡常用的gui控制項,它主要實現兩個功能:增加、減少。
效果如圖:(沒有錄製gif)
血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,
同時這個也是乙個quad的序列圖,用它來組成血條的起始、中間、結束。
增加和減少控制好繪製時的座標就可以了,其中鍵「q」增加,「w」鍵減少,完整的**如下:
blood.lua
hm=main.lualocal cover=love.graphics.newimage('
bloodlineb.png')
local aq= love.graphics.newquad(0,0,20,30,60,30
)local bq= love.graphics.newquad(20,0,20,30,60,30
)local cq= love.graphics.newquad(40,0,20,30,60,30)
function
hm:new(o)
o = o or {} --
如果引數中沒有提供table,則建立乙個空的。
--將新物件例項的metatable指向表(類),這樣就可以將其視為模板了。
setmetatable
(o,self) --
在將__index欄位指向自己,以便新物件在訪問函式和字段時,可被直接重定向。
self.__index =self --
最後返回構造後的物件例項
returno
endfunction
hm:update(dt)
if self.zt=='n'
then
if self.hpthen
self.hps=self.hps-dt*30
endelseif self.zt=='
add'
then
if self.brea then
self.zt='n'
elseif self.hpthen
local newhp=self.hp+dt*30
if newhp>self.hps then
self.hp=self.hps
self.zt='n'
else
self.hp=newhp
endend
endend
function
hm:add(val)
if (self.hp+val)>self.maxhp then
self.hps=self.maxhp
self.zt='
add'
elseif self.zt=='
add'
then
if (self.hps+val)>self.maxhp then
self.hps=self.maxhp
else
self.hps=self.hps+val
endelse
self.hps=self.hp+val
self.zt='
add'
endend
function
hm:sub(val)
if (self.hp-val)>0
then
self.hp=self.hp-val
else
self.hp=0
self.hps=0
endend
function
hm:draw()
--邊框
love.graphics.setpointsize( 3)
love.graphics.setcolor(
50,50,255
) love.graphics.rectangle(
"line
",self.x,self.y,self.w,self.h)
--當前量
love.graphics.setpointsize( 1)
love.graphics.setcolor(
20,140,100
) love.graphics.rectangle(
"fill
",self.x,self.y,self.hps,self.h)
--最低量
love.graphics.setcolor(
0,255,128
) love.graphics.rectangle(
"fill
",self.x,self.y,self.hp,self.h)
love.graphics.setcolor(
255,255,255
)--下面的**分別繪製血條的起始、中間、結束
love.graphics.drawq(cover,aq,self.x,self.y)
for n=1,(self.maxhp-40)/20
dolove.graphics.drawq(cover,bq,self.x+n*20
,self.y)
endlove.graphics.drawq(cover,cq,self.x+self.maxhp-20
,self.y)
end
function love.load()
require
'blood
'uu=hm:new(o)
uu:sub(
100)--
減血end
function
love.update(dt)
uu:update(dt)
endfunction
love.draw()
uu:draw()
endfunction
love.keypressed(key)
if key=='q'
then
uu:add(
70)--
加血end
if key=='w'
then
uu:sub(
70)--
減血end
end
love2d教程28 血條
感謝朱大仙提供的 這才有了這篇部落格。血條 至於體力 法力都是類似的 是遊戲裡常用的gui控制項,它主要實現兩個功能 增加 減少。效果如圖 沒有錄製gif 血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,同時這個也是乙個quad的序列圖,用它來組成...
love2d教程26 對話條
有了之前的文字滾動顯示,現在我們在其基礎上與loveframes結合建立乙個對話條,先上 效果圖.逐行顯示 逐字顯示 功能簡介,支援事件 不過由於我把 的判斷放到了update裡所以 不支援繪圖操作 支援 中英文混排 支援多頁顯示 本頁結束後空格鍵翻頁 所有顯示結束後esc推出,呼叫也很簡單,如下 ...
love2d教程19 揹包
慚愧,在春節裡一篇文章也沒寫,現在又回到學校了,繼續love2d教程。由於我 只是現看現寫,有些地方可能錯了,希望大家指正,我會及時修正。這篇文章主要關 於loveframes的應用,是按朱大仙要求寫的,原文在此。揹包功能是通過loveframe來實現的,loveframes其實是支援中文的,只需要...