【游戏功能】
一、一个让人分不清的传送阵
传送阵首版只有地上一圈发光纹路,玩家踩上去等了两秒才被传走——这两秒里玩家不知道自己有没有踩对,也不知道还要等多久。传送阵的表现要点是三段反馈:踩上去立刻亮起(确认反馈),充能期间光圈从内向外收缩(进度反馈),传送瞬间白光一闪(结果反馈)。三段缺了任何一段,玩家都会在传送阵前犹豫。
二、底层原理
传送阵用SL:Schedule驱动充能进度、SL:GetValue判断玩家是否还在圈内。玩家离开圈则进度清零重来——防止踩上去又走开的误触发。在幂尔框架里,SL:ScheduleOnce 延迟触发传送、SL:SendLuaNetMsg 同步传送结果。
fx-portal
三、正确写法
local TeleportPad = {}
local CONST = { KEY = "TeleportPad", CHARGE = 2.0 }
function TeleportPad.OnStay(myID)
TeleportPad._acc = (TeleportPad._acc or 0) + 0.02
local p = TeleportPad._acc / CONST.CHARGE
TeleportPad._ring:SetProgress(p)
if p >= 1 then
SL:UnSchedule(TeleportPad._sched)
SL:SendLuaNetMsg(CONST.MSG_ID, 0, 0, 0,
SL:JsonEncode({ key = CONST.KEY, op = 1, actorID = myID }))
end
end
function TeleportPad.OnLeave()
TeleportPad._acc = 0
TeleportPad._ring:SetProgress(0)
end
return TeleportPad
四、四个必须钉死的细节
五、心法
传送阵的三段反馈教的是:一切需要玩家"等待确认"的交互——开门、拾取、复活、传送——都要有充能进度、充能完成、传送结果三段反馈。进度让玩家知道"正在发生",完成让玩家知道"已经完成",结果让玩家知道"去了哪里"。三段咬合,等待才不焦虑。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 巡查日志里有个离谱的现场:狼怪的刀抡到一半,忽然僵在半空,头顶跳出一行"前摇断"——绕了半天找不到谁动的手,最…
【游戏功能】 一根木头顺着坡滚下来,凭什么比一记刀更有威慑力?滚木的答案在路上:它不长眼、不停脚、不认人,从画面这头滚到那头…
【游戏功能】 有玩家举报队友"操控怪物"——录像里一头狼怪明明倒地了,几秒后又爬起来,绕开所有人径直去咬另一头狼。查了半天才…
【游戏功能】 if hp < 30 then dmg = dmg 1.6 ——一行拿命换刀的判定,撑起了背水一战全部的疯:气…
【游戏功能】 巡查群的凌晨有条没人认领的报障:练级点的狼怪集体"变慢"了,走两步卡一步,像在水里蹚——读条记录翻到最后才发现…
【游戏功能】 行囊里明明还有三张符、两瓶药,为什么一把火烧了反而更强?破釜沉舟的账本就是这么反着记的:退路烧掉的那一刻,刀上…