【游戏功能】
它接招的那一秒,就是你的那一秒。抛砖把这句拳谚做成了机制:一块砖头砸过去,它本能抬手格挡——格挡的一秒二里,招式用老、门户大开,这一刀翻倍。这篇把整套模块拆开:配置表、砖头构件、格挡判定、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:一块砖砸出个破绽,接住就是双倍
演示场点「抛砖!」:一块青砖划着弧线砸向怪——它本能地抬臂格挡,"格挡了!"三个字挂上头顶:一秒二的破绽窗口开着。窗口里你的刀是二十点的金字——双倍的账打在它举着的手臂上。窗口一过,它放下手臂照常出刀。再抛一块,再来一轮。演示里看门道:砖不伤人,砖是请柬——它每一次接招,都是在给你签字画押。抛砖玩的是条件反射:它的本能越守规矩,你的双倍越准时。
fx-baitbrick
二、底层原理:一块飞行砖加一次格挡开窗
模块的机关是一对搭档。飞行砖:砖沿抛物线飞向怪——砖不结伤害账,它是一份"请格挡"的请柬,怪的本能会接下这份请柬。格挡开窗:接到请柬的那一帧,怪挂一点二秒的格挡态——格挡态里它不攻击、不追击、门户大开,挨刀翻倍。和打断那类取消攻击的分野在"打断是摁停,抛砖是请动":打断让它这一招发不出来,抛砖让它多做一个动作——格挡这个动作占用的那一秒二,才是全套机制真正的产出。
它为什么会本能格挡?守规矩的怪对飞行物一律抬手——这份守规矩写在它的行为表第一行,抛砖只是照着它的规矩递了张条子。
三、核心代码:完整模块(上·骨架)
-- @file BaitBrick.lua
-- 抛砖 —— 一块砖砸出个破绽,接住就是双倍
local BaitBrick = {}
local CONST = {
BRICK_SPEED = 320,
BRICK_ARC = 60,
BRICK_GRAV = 160,
GUARD_TIME = 1.2,
BRICK_CD = 3.0,
OPEN_AMP = 2.0,
COLOR_BRICK = "#906848",
COLOR_DEEP = "#3e2a14",
COLOR_GHOST = "#e8d0b0",
ZORDER_BRICK = 134,
ZORDER_FX = 135,
AUTOINC_BASE = 1038000,
}
local _bricks = {}
local _guardT = 0
local _guardID = 0
local _cdLeft = 0
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "BTB",
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 SafeRemove(node)
if node and not GUI:Widget_IsNull(node) then
GUI:removeFromParent(node)
end
end
local function ShowTip(msg)
if msg and msg ~= "" then SL:ShowSystemTips(msg) end
end
local function OpenGuard(tid)
_guardT = CONST.GUARD_TIME
_guardID = tid
SL:FreezeActorAll(tid, CONST.GUARD_TIME)
SL:PlayGuardPoseFx(tid)
SL:TipAbove(tid, "格挡了!")
ShowTip("它接招了——一秒二破绽,打点上加双倍")
end
四、核心代码:完整模块(下·定时器与格挡结算)
-- 抛砖入口
function BaitBrick.Throw()
if _cdLeft > 0 then
ShowTip("砖在飞——" .. string.format("%.1f", _cdLeft) .. "秒")
return
end
if _guardT > 0 then
ShowTip("它正格挡——快打!")
return
end
local tid = SL:GetValue("MARK_TARGET_ID")
local tp = GetActorPos(tid)
local myID = SL:GetValue("USER_ID")
local mp = GetActorPos(myID)
if not tid or not tp or not mp then return end
_cdLeft = CONST.BRICK_CD
SL:SpawnProjectile(myID, tp.x - mp.x, CONST.BRICK_ARC,
CONST.BRICK_SPEED, CONST.BRICK_GRAV,
function(hitX)
if math.abs(hitX - tp.x) <= 26 then OpenGuard(tid) end
end)
SL:PlayBrickTossFx(myID)
ShowTip("砖出去了——它一接招破绽就开")
end
-- 破绽出口:格挡期的刀翻倍
SL:RegisterLUAEvent(LUA_EVENT_BEFORE_HURT, "BTB_Amp", function(tid, dmg)
if _guardT > 0 and tid == _guardID then
return math.floor(dmg * CONST.OPEN_AMP)
end
return dmg
end)
-- 定时器:破绽倒计时
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
_cdLeft = math.max(0, _cdLeft - dt)
if _guardT > 0 then
_guardT = _guardT - dt
local mp = GetActorPos(_guardID)
if _guardFx and mp then
GUI:setPosition(_guardFx, mp.x, mp.y - 70)
end
if _guardT <= 0 then
ShowTip("它放下手了——再抛一块")
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("抛砖", function()
BaitBrick.Throw()
end)
ShowTip("技能已加载: 抛砖 (调试按钮触发)")
end, 1.0)
function BaitBrick.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
SL:UnregisterLUAEvent(LUA_EVENT_BEFORE_HURT, "BTB_Amp")
SafeRemove(_guardFx)
_guardT = 0
end
return BaitBrick
五、机制问答
问:格挡的砖会砸疼它吗?
答:不会——砖是请柬不是炮弹,零伤害,它的疼在后面那一刀上。
问:破绽期能接几个刀?
答:一个窗口随便打——格挡的一点二秒里刀刀双倍,窗口不认刀数只认时间。
问:它格挡的时候会追人吗?
答:不会——格挡态冻结行动,它举着手臂站在原地,追击的账等放下手再算。
问:砖被别的弹道撞掉了怎么办?
答:白抛——砖是实体,半路被截就没人接招,抛砖的弹道也要挑干净的路走。
问:格挡和眩晕叠加吗?
答:不叠——它只做一个动作,眩晕来了格挡取消,控住挨平价,站着的破绽才翻倍。
问:抛砖和撩拨能配合吗?
答:绝配——砖引它格挡定身,撩拨的火气照涨,格挡完火气满上头冲锋,一套连招把它的行为表全按了一遍。
问:砖会砸醒周围的怪吗?
答:会——砖落地的动静不小,抛砖前看清邻居,别一块砖引来一窝。
问:格挡期能接控制吗?
答:能——格挡冻它的手脚不挡状态,晕住的一个格挡姿势原地保持,破绽和眩晕一起生效。
六、调参指南与商业服怎么用
第四笔是窗口的深度:一点二秒对三点砖冷却是"一砖一窗"的循环——窗口太短刀没落它手就放,太长格挡变成定身。第三笔是翻倍的档位:双倍对十点平砍是二十的接招账——翻倍不足一成五的版本抛砖白抛,两倍五的版本格挡期成了处刑台。第二笔是砖的弧线:六十步的抛物高是"看得见起落"的礼数——砖飞得太平像暗器,太高像抛绣球,六十步刚好是一块砖的体面。第一笔是格挡的姿势:它要真的抬臂、真的停步——格挡的姿势越认真,破绽的可信度越高,姿势糊弄的格挡连玩家都骗不过。常见坑三个:格挡态叠上眩晕两套冻结打架;砖的碰撞窗太宽,隔着半个身位也算接招;破绽期的双倍漏乘软刀,气尽加格挡出负收益。
商业服里抛砖是"拳师流派"的开手礼:不直接打,先递一块砖看你接不接——商城里砖的样式做成品级,青砖、铁砖、碑文砖,那道划着弧线飞过去的砖影就是拳师的开手式。运营落地还有两笔:一段是接招教学——教一句"它抬手的那一秒就是你的",流派第一课是懂它的本能;一段是破绽榜——按格挡期打出的总伤排名,接招接得最准时的人有碑。变体做成连环砖:格挡期里再抛一块,它换手接招破绽续期——从一砖一窗到砖砖不绝,拳师的连环手艺。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
拳师的歇后语留一句:砖头递过去,破绽找回来。
拳师再补半句收尾的:砖抛出去就不要回头,破绽在它脸上不在砖上。
写完留一句给做诱招系的同学:抛砖卖的是"它的本能就是你的破绽"——那块划着弧线递过去的砖,是把它的条件反射变成你的双倍窗口的一张请柬。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的拍子一秒六一轮,拍上出刀白给,拍子空当里递刀才是十六点。错拍把"读它的拍"变成递刀的时机学:绿窗一亮,刀递…
【游戏功能】 两刀压进它一拍里——第二刀落定的瞬间它趔趄一秒,趔趄里刀刀翻倍。抢拍把"比它快"做成了机制:它两秒一拍地出手,…
【游戏功能】 按住一点五秒再松手——沉刀的全部仪式就这一按一放:按住时劲往刀上沉,松手那一瞬二十二点的重刀见真章;按不满就松…
【游戏功能】 起手之后零点三秒里再点一下,两刀并成一记十六点的双击斩;没接上,起手就白给了。双击斩把"两击"这个概念拆进输入…
【游戏功能】 它出什么招,你就换什么式——劈克刺、刺克扫、扫克劈,三式相扣的一个圈。挪移换式把猜拳搬进了打架:怪的下一手提前…
【游戏功能】 连珠 = 连珠 + 1 —— 半秒里每按一次涨一格的连珠,五珠攒满就是一记二十五点的重轰。连珠快拳把"手快"直…