【游戏功能】
拆一行代码:
local grade = math.abs(temp - 85) <= 5 and "恰到好处" or "水温失手"
泡茶的全部评分标准压缩在这一行的绝对值里:水温离八十五度差几度,茶就差几个档次。今天讲泡茶的表现,看一个水温旋钮怎么泡出茶色的层次。
一、注水、观色、闻香三段品鉴
泡茶的品鉴三段。注水段:茶壶倾斜注水入杯,水线从壶嘴到杯口拉出一条弧——注水的过程本身就是仪式,水线不能断。观色段:茶汤颜色由浅入深——绿茶八十五度泡出鹅黄,一百度过头泡出暗褐,六十度不足泡出淡白——茶汤的颜色就是水温的成绩单,玩家的眼睛就是评分器。闻香段:热气从杯口袅袅上升,热气的浓淡随水温变化——九十度热气缭绕,六十五度热气稀薄——香是看不见的,热气是香的替身。三段的核心是茶汤颜色的连续变化:颜色的深浅由水温连续映射,玩家拖滑块时茶杯里的颜色就该微微变——反馈在出手之前。
完整演示在这,调水温后斟茶:
fx-tea
二、幂尔框架实现:茶色映射与评分播报
茶色按水温与理想值的偏差映射,评分分三档播报:
local Tea = {}
local KEY = { IDEAL = 85 }
local poured, teaColor = false, 0
function Tea.Pour()
if poured then return end
poured = true
local temp = SL:GetValue("waterTemp") or 85
SL:PlayActorAct("teapot", "pour")
-- 注水: 茶色随时间渐深
SL:Schedule(function(dt)
poured_k = poured_k + dt * 0.7
teaColor = poured_k * (0.4 + (temp - 60) / 100)
SL:SetValue("teaColor", teaColor)
SL:SetFxPos("steam", 360 + math.random(-10, 10), 150 - math.random(30))
if poured_k >= 1 then
SL:UnSchedule("teaPour")
Tea.Judge(temp)
end
end, 0.016, "teaPour")
end
function Tea.Judge(temp)
local ideal = math.abs(temp - KEY.IDEAL)
local grade, pts
if ideal <= 5 then
grade, pts = "恰到好处", 95
elseif ideal <= 12 then
grade, pts = "尚可入口", 78
else
grade, pts = "水温失手", 55
end
SL:ShowHitNum(360, 118, pts, grade == "恰到好处" and "green" or "orange")
SL:ShowSystemTips(grade .. " · 评分 " .. pts)
SL:PlaySfx("tea_ready")
end
return Tea
评分播报的颜色跟档位走:恰到好处绿字、失手橙字——颜色比文字先一步告诉玩家结果。
三、温度档位与茶色的脾气
温度滑块的范围两端都该有脸:六十度的茶汤淡得像白水,一百度度的茶汤深得发黑——两个极端都是"能看见的错"。理想值八十五度是绿茶的常识:滑块旁的小字标注"绿茶宜八十五度",提示要给,答案不给——玩家自己微调到茶色正了,这个"调对"的瞬间就是泡茶玩法的核心乐趣。热气的粒子要慢:上升速度每秒三十像素、左右摆幅十像素,热气是慢的,快了像蒸汽机。茶杯的釉色留白:杯身用十二度透明度的白——茶汤的颜色要靠杯壁的白衬出来,杯太花茶色就看不真。最后,品完一轮茶杯要"洗":茶汤倒掉、杯壁刷净、重新注水——洗杯的动画十秒一次,泡茶是个循环的手艺,循环感就是它的韵。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 围住一只怪的贪心人人都有:三面堵死一只不漏——可围三阙一的规矩偏偏唱反调:围三面留一口,怪只会往那口里钻——口…
【游戏功能】 元素搭配的老话是水火不容,可战场上的说法得倒过来念:水是雷的引信。引水的机制是一场两步的合谋:先泼一瓢水把地泼…
【游戏功能】 低血大怪的回血机制人人见过,可血珠的回血藏着一手"要你去抢"的心机:它每掉两成血就吐一颗血珠在地上,两秒内不踩…
【游戏功能】 隐形怪人人都遇到过,可现身的机制比隐形狠:它钻进影子里消失,一秒后从你脚下画的影圈里钻出来,背刺三十四点——影…
【游戏功能】 有人纳闷:大怪危机预警里最气人的一档是什么?不是它放大招,是它开阵——法阵一转,转满三秒蹦出两只小狼,好好的单…
【游戏功能】 if chg <= 0.8 then lock = true ——一行把"锁定"写进蓄力里的判定,道破了蓄力炮…