【游戏功能】
一、一个从头顶飞过的治疗弹
治疗波弹射的治疗光珠从法师飞向神兽再弹回法师,光珠沿二次贝塞尔弧线飞行——弧线的拱顶决定了"弹"的感觉,直线飞行的治疗弹像在打乒乓球。弧线的控制点放在两端连线的中垂线上方,控制点越高弧线越弯,弹射的视觉弹性越强。
二、底层原理
弹射治疗的核心是序列弹道加衰减结算:治疗珠从施法者出发飞向第一个目标,到达后治疗目标并从目标位置弹向下一个目标,每次弹射治疗量乘衰减系数。在幂尔框架里,SL:ScheduleOnce 驱动弹射间隔,SL:SendLuaNetMsg 在每次到达时结算治疗。
fx-soulchain
三、正确写法
local ChainHeal = {}
local CONST = { KEY = "ChainHeal", BOUNCE = 4, FADE = 0.8 }
function ChainHeal.Cast(myID)
local targets = { myID }
local allies = SL:GetValue("FIND_IN_VIEW_PLAYER_LIST") or {}
for _, id in ipairs(allies) do
if id ~= myID and #targets < CONST.BOUNCE then
table.insert(targets, id)
end
end
for i = 1, #targets - 1 do
SL:ScheduleOnce(function()
SL:SendLuaNetMsg(CONST.MSG_ID, targets[i + 1], 0, 0,
SL:JsonEncode({ key = CONST.KEY, heal = 30 * math.pow(CONST.FADE, i) }))
end, i * 400)
end
end
return ChainHeal
四、四个必须钉死的细节
五、心法
弹射治疗教的是:治疗的价值不在于总量,在于覆盖。一个只能治一个人的大治疗不如一个能弹四跳的小治疗——覆盖面就是团队的生存面。表现层的弹射弧线让玩家看见治疗的流动方向,这种可视化的资源流动感是弹射类治疗的核心体验。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 巡查日志里有个离谱的现场:狼怪的刀抡到一半,忽然僵在半空,头顶跳出一行"前摇断"——绕了半天找不到谁动的手,最…
【游戏功能】 一根木头顺着坡滚下来,凭什么比一记刀更有威慑力?滚木的答案在路上:它不长眼、不停脚、不认人,从画面这头滚到那头…
【游戏功能】 有玩家举报队友"操控怪物"——录像里一头狼怪明明倒地了,几秒后又爬起来,绕开所有人径直去咬另一头狼。查了半天才…
【游戏功能】 if hp < 30 then dmg = dmg 1.6 ——一行拿命换刀的判定,撑起了背水一战全部的疯:气…
【游戏功能】 巡查群的凌晨有条没人认领的报障:练级点的狼怪集体"变慢"了,走两步卡一步,像在水里蹚——读条记录翻到最后才发现…
【游戏功能】 行囊里明明还有三张符、两瓶药,为什么一把火烧了反而更强?破釜沉舟的账本就是这么反着记的:退路烧掉的那一刻,刀上…