【游戏功能】
年货集上最神奇的一个摊位:一张红纸对折三折,剪刀咔嚓五下,展开就是一整幅对称的花样——没有画稿,没有底样,全在剪纸人的心里。今天拆剪窗花的表现,看"对称"这个数学概念怎么被一把剪刀变成年味。
一、折纸、下剪、展开三段惊喜
剪窗花的仪式三段。折纸段:红纸对折两折成小方块,对折线就是未来的对称轴——折几折决定花样的对称数,两折出双对称、三折出四向对称。下剪段:在小方块上剪三五刀,剪痕有长有短有弧——这一段是全场的悬念:剪的时候谁也不知道展开是什么样,每一刀都是盲盒。展开段:红纸缓缓铺开,剪痕在对称轴两侧镜像成花样,镂空的洞连成一圈——展开的瞬间是全场唯一的重音,红纸铺开的动画要从中心向四周渐次展开,像花开。三段的惊喜递进:折纸是铺垫,下剪是悬念,展开是答案——答案永远比想象对称。
完整演示在这,先剪三刀再展开:
fx-paper
二、幂尔框架实现:镜像镂空与展开动画
展开用缩放动画从中心铺开,镂空沿对称轴镜像:
local PaperCut = {}
local cuts = {}
local opened = false
function PC.Cut(x, y, len)
if opened then return end
cuts[#cuts + 1] = { x = x, y = y, len = len }
SL:PlaySfx("scissor")
SL:PlayBurst(x + len, y + len / 2, "paper_bit", 3)
end
function PC.Unfold()
if #cuts == 0 or opened then return end
opened = true
-- 展开动画: 红纸从中心向四周放大
SL:PlayFxAt("paper_unfold", 330, 160)
SL:PlaySfx("unfold")
SL:Schedule(function(dt)
local k = SL:GetValue("unfoldK") or 0
k = math.min(1, k + dt * 1.2)
SL:SetValue("unfoldK", k)
SL:SetFxScale("paper", 0.2 + 0.8 * k)
if k >= 1 then
SL:UnSchedule("unfoldRun")
SL:PlaySfx("reveal")
end
end, 0.016, "unfoldRun")
end
-- 渲染: 镂空沿对称轴镜像复制
function PC.RenderCuts()
for _, c in ipairs(cuts) do
for m = -2, 2 do
SL:PunchHole(
330 + m * 88 + c.x - 40 + c.len / 2,
c.y - 50,
8 + c.len / 4
)
end
end
end
return PC
镂空的镜像循环从负二到正二——五列对称镂空把一张红纸变成一幅花样,这就是"折几折"在渲染端的兑现。
三、镂空分布与展开的翻页感
镂空的分布是花样的灵魂:剪痕要错落——一处圆洞、一处月牙、一处锯齿,展开后的对称花样才有层次。全是圆洞的窗花像筛子,全是月牙的像帘子,混着来才是花样。展开的动画从中心向四周放大:缩放从零点二起步,配透明度同步上升——红纸像被呼吸吹开,铺开的过程本身就是第一眼的惊喜。展开后的红纸边缘压一圈金边——金边是窗花的装裱,没有金边的红纸是作业,有金边的才是年货。最后,剪落的纸屑别浪费:三五片红色纸屑从剪刀口飘落,落在桌面上不再动——纸屑是剪刀工作过的证据,落在那里的都是手艺。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 围住一只怪的贪心人人都有:三面堵死一只不漏——可围三阙一的规矩偏偏唱反调:围三面留一口,怪只会往那口里钻——口…
【游戏功能】 元素搭配的老话是水火不容,可战场上的说法得倒过来念:水是雷的引信。引水的机制是一场两步的合谋:先泼一瓢水把地泼…
【游戏功能】 低血大怪的回血机制人人见过,可血珠的回血藏着一手"要你去抢"的心机:它每掉两成血就吐一颗血珠在地上,两秒内不踩…
【游戏功能】 隐形怪人人都遇到过,可现身的机制比隐形狠:它钻进影子里消失,一秒后从你脚下画的影圈里钻出来,背刺三十四点——影…
【游戏功能】 有人纳闷:大怪危机预警里最气人的一档是什么?不是它放大招,是它开阵——法阵一转,转满三秒蹦出两只小狼,好好的单…
【游戏功能】 if chg <= 0.8 then lock = true ——一行把"锁定"写进蓄力里的判定,道破了蓄力炮…