Files
Techmino/parts/backgrounds/cubes.lua
MrZ626 fddb2db8c7 整理代码
更多帧更新改为时间更新
微调cubes背景
微调音乐室ui
2021-09-25 19:29:09 +08:00

82 lines
1.8 KiB
Lua

--Flying cubes
local gc=love.graphics
local gc_clear=gc.clear
local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth
local gc_rectangle=gc.rectangle
local rnd=math.random
local ins,rem=table.insert,table.remove
local back={}
local t
local squares
function back.init()
t=26
squares={}
end
function back.update(dt)
t=t-1
if t==0 then
local size=SCR.rad*(2+rnd()*3)/100
local S={
x=(SCR.w-size)*rnd(),
y=(SCR.h-size)*rnd(),
vx=0,vy=0,
size=size,
color=COLOR.random_dark(),
}
local speed=SCR.rad*(1+rnd()*2)/6
if rnd()<.5 then
S.vy=26*(.5-rnd())
S.vx=speed
if rnd()<.5 then
S.x=-S.size
else
S.x=SCR.w
S.vx=-S.vx
end
else
S.vx=26*(.5-rnd())
S.vy=speed
if rnd()<.5 then
S.y=-S.size
else
S.y=SCR.h
S.vy=-S.vy
end
end
ins(squares,S)
t=rnd(6,16)
end
for i=#squares,1,-1 do
local S=squares[i]
if
S.vx>0 and S.x>SCR.w or
S.vx<0 and S.x+S.size<0 or
S.vy>0 and S.y>SCR.h or
S.vy<0 and S.y+S.size<0
then
rem(squares,i)
else
S.x=S.x+S.vx*dt
S.y=S.y+S.vy*dt
end
end
end
function back.draw()
gc_clear(.1,.1,.1)
gc_setLineWidth(6)
for i=1,#squares do
local S=squares[i]
local c=S.color
gc_setColor(c[1],c[2],c[3],.2)
gc_rectangle('line',S.x,S.y,S.size,S.size)
gc_setColor(c[1],c[2],c[3],.3)
gc_rectangle('fill',S.x+3,S.y+3,S.size-6,S.size-6)
end
end
function back.discard()
squares=nil
end
return back