【游戏功能】
两键同按零点一五秒内——铰击:两把刃铰在一起砸它二十,外加半秒的僵。单按一键只有十点白给。这篇把整套模块拆开:配置表、铰击表、同按判定、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:两键同按,铰它一下二十
演示场两枚键分列左右:「左刃」「右刃」。单点一键——十点灰字白给,提示"再点另一边凑成铰"。两键几乎同按(零点一五秒内)——两把刃铰在一起:"铰-二十"的蓝字砸出来,外加半秒僵。演示里试两拍:双指齐按的老手,和左右手来回倒的手忙脚乱——铰击玩的是双手的同拍:两把刃只有同时出鞘才叫铰。
fx-scissorstrike
二、底层原理:一张铰击表加一次同按判定
模块的机关是一对搭档。铰击表:记录每键最后按下的时间戳和侧别——两键不同侧、间隔零点一五秒内,判成铰击。同按判定:铰击成立的那一拍两把刃并成一记——二十点外加半秒僵,判完清表。和连按那类计数的分野在"铰击认双侧同拍":连按单键也涨珠,铰击必须两边换着按——单键刷得再快也只是十点的白给,换手同拍才是铰击的唯一语法。
同按窗口为什么零点一五秒而不是零点三?零点三的双键同按普通玩家都能蒙对,零点一五的窗口是"双手真同拍"的证明——窗口收紧,铰击才从按钮变成手艺。
三、核心代码:完整模块(上·骨架)
-- @file ScissorStrike.lua
-- 铰击 —— 两键同按,铰它一下二十
local ScissorStrike = {}
local CONST = {
SAME_WINDOW = 0.15,
SCISSOR_DMG = 20,
SOLO_DMG = 10,
STUN_TIME = 0.5,
COLOR_SCISSOR = "#4898b8",
COLOR_DEEP = "#123e4e",
COLOR_GHOST = "#b8e0f0",
ZORDER_CUT = 133,
ZORDER_FX = 135,
AUTOINC_BASE = 1056000,
}
local _lastT = -9
local _lastSide = ""
local _stunT = 0
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "SCS",
CONST.AUTOINC_BASE + _autoInc)
end
local function GetActorPos(id)
if not id then return nil end
local x = SL:GetValue("ACTOR_POSITION_X", id)
local y = SL:GetValue("ACTOR_POSITION_Y", id)
if not x or not y then return nil end
return { x = x, y = y }
end
local function ShowTip(msg)
if msg and msg ~= "" then SL:ShowSystemTips(msg) end
end
local function DoScissor(tid)
_stunT = CONST.STUN_TIME
local now = SL:GetTime()
SL:ActorHurt(tid, CONST.SCISSOR_DMG)
SL:TipAbove(tid, "铰-20")
SL:StunActor(tid, CONST.STUN_TIME)
SL:PlayScissorFx(tid)
SL:ScreenShake(3, 0.2)
_lastT = -9
_lastSide = ""
ShowTip("铰上了——二十点外加半秒僵")
if SL:GetValue("ACTOR_DEAD", tid) then
ShowTip("它倒了——被铰死的")
end
end
四、核心代码:完整模块(下·定时器与同按判定)
-- 单键出口
local function SoloCut(tid)
SL:ActorHurt(tid, CONST.SOLO_DMG)
SL:TipAbove(tid, "-10")
ShowTip("单刃十点——再点另一边凑成铰")
end
-- 按键入口:同按判定
function ScissorStrike.Tap(side, tid)
if not tid or SL:GetValue("ACTOR_DEAD", tid) then return end
local now = SL:GetTime()
if side ~= _lastSide and now - _lastT <= CONST.SAME_WINDOW then
DoScissor(tid)
else
_lastT = now
_lastSide = side
SoloCut(tid)
end
end
-- 定时器:僵态倒计时
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
if _stunT > 0 then
_stunT = _stunT - dt
if _stunT <= 0 then
ShowTip("它缓过来了——再铰一把")
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("左刃", function()
ScissorStrike.Tap("L", SL:GetValue("MARK_TARGET_ID"))
end)
SL:BindDebugButton2("右刃", function()
ScissorStrike.Tap("R", SL:GetValue("MARK_TARGET_ID"))
end)
ShowTip("技能已加载: 铰击 (调试按钮触发)")
end, 1.0)
function ScissorStrike.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
_lastT = -9
_lastSide = ""
_stunT = 0
end
return ScissorStrike
五、机制问答
问:两下都按同一边算铰吗?
答:不算——铰认交叉不认重复,同边连按只是两下十点的白给,换边才有铰。
问:半秒僵里能接下一轮铰吗?
答:能——僵不影响按键,僵里按出新一轮同按僵上加僵,连续铰的高手能把怪钉在僵里。
问:铰击和普攻抢手吗?
答:不抢——普攻是自动的,铰击是手动双键,普攻的十点照走,铰击的二十额外结。
问:间隔零点一六秒差一点算吗?
答:不算——窗口认零点一五不认零点一六,差一厘也是单键,闸门的铁面是这门机制的手感。
问:铰击能暴击吗?
答:能——铰走正常结算,暴击的铰二十变四十,僵里的暴击铰是这套机制的彩票。
问:左右手能反过来按吗?
答:能——铰认双侧同按不认先后主次,先右后左一样铰,左撇子的手感照旧。
问:同按的窗口能练出来吗?
答:能——零点一五秒练五十遍手就记住了,铰击的手感是肌肉不是天赋。
问:铰击对空中的怪有效吗?
答:看它的高度——铰吃近战射程,挑上天的怪够不着就不铰,落地再铰。
六、调参指南与商业服怎么用
第四笔是窗口的松紧:零点一五秒是"双手真同拍"的门槛——窗口放宽到零点三普通连点也蒙得对,缩到零点零八变成键盘抽奖,零点一五刚好是"练得出但蒙不着"的档。第三笔是白给的定价:单键十点是"错也有一点"的保底——单键零伤的版本按错全白费,十点的版本错了也不心疼。第二笔是僵的长短:半秒的僵是"够砍一刀"的甜头——僵一秒铰击变控制,零僵的铰击少了那一口爽,半秒刚好卡在"伤害兼控制"的档。第一笔是双刃的形制:两把刃要真的从左右铰合——刃从两侧向中间合拢的那一帧就是"铰"字的画面,单侧出刃的铰击名不副实。常见坑三个:同按判定认了同侧,左右手连按一边也铰;僵态的怪再吃铰,僵上叠僵永动;窗口用帧数计,掉帧的双按算成单按。
商业服里铰击是"双刀客流派"的合璧:左手刀右手刃,分开白给合起见血——商城里双刃的样式做成品级,铁铰、银铰、龙凤铰,两把刃合拢的那一声脆响就是双刀客的合璧印。运营落地还有两笔:一段是双手教学——教一句"左右手各管一边,同按才算铰",流派第一课是分工;一段是合璧榜——按铰击的总伤排名,双手最齐的人有碑。变体做成三刃铰:第三刃加入同按,三刃铰三十三——从双刃到三刃,合璧的规格翻倍。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
双刀客的老话只有一句:两刃合上,才叫铰。
双刀客的第二课:铰完僵的半秒别贪,僵完了它的爪子比你的刀快。
双刀客的第三课:单键十点是饵,铰击的二十才是钩。
双刀客的压箱句:铰击不在快,在齐。
双刀客的压箱句:铰击不挑时机,挑的是你两只手的默契——练熟了,闭着眼也是二十。
写完留一句给做同按系的同学:铰击卖的是"双手合拍才见血"——那两把从左右合拢的刃和半秒的僵,是把"双手同拍"这个动作直接定价成二十点的合璧礼。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 磁点一开,它的箭全拐——四秒里它射出的每一支箭都拐向同一个聚点,到了聚点整支碎掉,一支都够不着你。磁引把"躲箭…
【游戏功能】 半场一摆两秒一趟的钟摆,砸中站线上的一切——包括被你引过去的怪。钟摆把"地形"变成了武器:它本身不认敌我,你引…
【游戏功能】 两键同按零点一五秒内——铰击:两把刃铰在一起砸它二十,外加半秒的僵。单按一键只有十点白给。这篇把整套模块拆开:…
【游戏功能】 三只怪三角连着链:死一只,另外两只各挨十五;链上再倒一只,最后那只又挨十五——三环扣把"清怪"变成了"连环",…
【游戏功能】 按住攒盾,盾值就是弹量,松手引爆贴脸的怪——蓄盾爆把"防御"改写成了"蓄弹药":盾攒得越厚炸得越疼,攒盾的两秒…
【游戏功能】 按对 劈→刺→扫 三键,一记四十;按错一环,只值八点平砍。三键诀把连招的顺序做成了考卷:三枚键摆在你面前,顺序…