【游戏功能】
一、先抛一个坑
暗影突袭为什么不能做成"消失→出现在怪身后→砍一刀"三步走?因为玩家看到的不是三步,是"一眨眼怪就掉了血但不知道谁打的"。突袭的表现命门是"来和去的路径都要有视觉痕迹"——来的时候一道黑影闪过,砍的时候刀光一闪,走的时候残影渐隐。三段视觉痕迹叠在一起才是"暗影突袭",缺了任何一段都变成"贴图闪烁"。
二、底层原理
暗影突袭的表现由三层叠加:冲锋层的黑影从起点到终点画一条弧线运动轨迹、命中层的刀光在目标位置闪白一帧、撤退层的残影从终点滑回起点渐隐。三层各持续零点一五秒依次触发,总时长零点四五秒——快到一气呵成、慢到看得清三个阶段。在幂尔框架里,SL:ScheduleOnce 驱动三段的串联触发。
fx-gale
三、正确写法
local ShadowAssault = {}
local CONST = { KEY = 'ShadowAssault', GAP = 0.15 }
function ShadowAssault.Cast(myID, targetID)
SL:ScheduleOnce(function()
SpawnShadowTrail(myID, targetID)
end, 0)
SL:ScheduleOnce(function()
PlaySlashFlash(targetID)
SL:SendLuaNetMsg(CONST.MSG_ID, targetID, 0, 0,
SL:JsonEncode({ key = CONST.KEY, op = 2, hit = targetID }))
end, CONST.GAP * 1000)
SL:ScheduleOnce(function()
SpawnRetreatAfterimage(myID)
end, CONST.GAP * 2 * 1000)
end
return ShadowAssault
四、四个必须钉死的细节
五、心法
暗影突袭教的是:三段串联的表现结构适用于一切"快速进出"的攻击——突袭、闪击、掠过。三段的视觉语义各不同:来的时候暗示方向、打的时候暗示命中、走的时候暗示撤退路线。三段的间隔是节奏参数,调整间隔就是调整这类技能的性格——间隔短是刺客、间隔长是武者。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 heat = heat + 1; if heat = 3 then rest = 1.6 ——两行管刀温的代码…
【游戏功能】 兄弟俩打一只狼,哥哥攒了三层劲自己放,一层加二十五;弟弟站在旁边干瞪眼——直到有人把劲递了过去:同样的三层,过…
【游戏功能】 有篇纠错单写得像小说:同一只狼,有人打它半小时血线稳如老狗,有人三分钟放倒——排查到最后发现,会打的那个从头到…
【游戏功能】 追着你满场跑的狼怪,为什么绕过一根石柱就懵在原地?脱影的答案藏在柱子背后:视线被石柱掐断一秒二,它脑子里"你"…
【游戏功能】 巡查群里有人喊邪门:同一套连招,昨天刀刀见血,今天刀刀被挡——查录像看到第三遍才看懂:狼怪学会了。他的出刀间隔…
【游戏功能】 if hand == last then acid = acid + 1 ——一行数手的判定,攒出了换手全部的…