【游戏功能】
隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草人,疼落在它身上,六针扎完,草人自焚结案。今天拆咒怨娃娃,看"代理结算"这个最邪门的机制怎么把距离变成摆设。
一、结咒、扎针、焚尽三段
咒怨娃娃的循环三段。结咒段:道士祭出草人,一条淡紫的咒线从草人缝里飘向狼怪胸口——结咒的瞬间草人"成为"了它:之后草人挨的每一针,账都记在狼怪头上。扎针段:银针连珠六下,每零点七五秒一针——针落在草人肩上,疼在狼怪胸口:草人打颤、狼怪抽搐,两边的受击演出同帧发生——代理结算的双向演出是这门咒术的招牌戏。焚尽段:六针扎满,草人自己烧起来、灰烬四散,狼怪头顶"咒满"大字收账——草人的一次性是设计的礼数:结过咒的草人就是一次性祭品,不许反复用。三段的核心是"伤害的改道":攻击的起点与终点被咒线重新接线,远近失去意义。
完整演示在这,默认自动循环:
fx-voodoodoll
二、幂尔框架实现:咒线绑定与代理落账
娃娃是一次状态的绑定加代理结算:
local VoodooDoll = {}
local POKES, POKE_DMG, POKE_GAP = 6, 16, 0.75
local doll = nil
function SL:CastDoll(caster, target)
doll = { pokes = 0, bound = target }
SL:SpawnProp("straw_doll", caster)
SL:DrawCurseThread(caster, target)
SL:ScheduleRepeat(POKE_GAP, function()
if not doll then return end
doll.pokes = doll.pokes + 1
SL:StabDollFx(doll.pokes) -- 针落草人
SL:HitActor(doll.bound, POKE_DMG) -- 账落本尊
SL:ShowTipAbove(doll.bound, "-" .. POKE_DMG .. " 针" .. doll.pokes)
SL:JitterProp()
if doll.pokes >= POKES then
SL:BurnPropFx()
doll = nil
SL:CancelRepeat()
end
end)
end
function Voodo.OnBoundDeath(bound)
if doll and doll.bound == bound then
doll = nil
SL:BurnPropFx()
SL:CancelRepeat()
end
end
return Voodo
doll.bound 记着结咒对象,针的账全走 HitActor(bound)——代理结算的实现薄得像纸,厚的是 OnBoundDeath 的清理:本尊死了草人立刻自焚,咒不追死人。
三、草人的画法与咒线的戏
草人是全场最"手工"的道具:麻黄色的圆脑袋、十字捆扎的身体、四肢用细线缝出来——草人的可信度全在"缝"字上,齐整的轮廓像玩具,歪歪扭扭的针脚才像连夜扎的。每挨一针,身上多一道红痕——六针六道,草人身上的红痕就是进度条,比任何计数器都瘆人。咒线用一条低透明的紫线连着草人与狼怪胸口,随呼吸轻轻摆动——线是代理关系的物证,线一断(或隐),代理就存疑。扎针的双向演出要严格同帧:草人打颤与狼怪抽搐差半帧都不行——观众相信"草人就是它",靠的就是这两边分毫不差的同步。自焚的收尾规格要小而完整:火星从针脚处燃起、从下往上烧穿、灰烬飘散——草人带着它替人挨的六道红痕一起化灰,仪式感全在这把火里。
四、代理系的边界:娃娃不替你挨打
咒怨系技能的四条边界。其一,只转输出不转仇恨——扎草人掉的血记在狼怪头上,狼怪的仇恨却始终锁定道士本尊,娃娃不是嘲讽替身;其二,绑定唯一——一个草人只结一个目标,想扎两只怪就得祭两个草人,代理不并发;其三,草人不占判定——场上的敌人打不到草人(它不是实体),草人的生死只由针数决定,这份"不可交互"是代理结算的安全边界;其四,目标位移不影响结算——狼怪跑到天边咒线照连,距离在这个机制里被取消了——这正是它邪门的地方,也是它冷却给得最长的理由。与移花接木(转走自己的毒)对照,咒怨娃娃是反向的代理:移花把账寄出去,娃娃把伤害引进来——驱散与诅咒在"账单路由"上各走一头。结咒有线、扎针同步、六针焚尽、四条边界——四件凑齐,咒怨娃娃才扎得出隔着屏幕的疼。
五、草人的戏份:道具的演技课
草人是全场戏份最重的道具,它的演技值得单开一课。成形时要"歪":脑袋歪十五度、身子拧着出场的草人才像连夜赶工的咒物,端端正正立着的那叫吉祥物。挨针时的反应分两级:针落瞬间整体一颤,第二针起颤幅加大、身体开始微微歪斜——六针六颤,颤到最后一针时草人已经站不稳,自焚的崩溃是颤出来的必然。红痕的走向也有讲究:每一针的红痕都从上一道红痕附近出发——伤痕叠伤痕,草人的破败是累积出来的,不是六道互不相干的划痕。咒线的摆动频率跟着扎针的节奏走:连针期间线绷得直,间隔期线松松地垂——线是两边痛苦的传导带,它的松紧就是这场咒术的心电图。玩家的手部演出也不能省:道士每扎一针,手指轻弹一下、肩线微沉——施术者的每个小动作都在告诉观众"这六针是我在扎"。最后是氛围的收束:草人焚尽的灰烬落地后,地面留一小圈淡紫的咒痕三秒淡去——咒物化灰,咒痕留地,战场的记忆又厚了一层。
补一个冷知识收尾:草人挨的六针其实没有一根碰到狼怪——所有伤害的结算坐标都在狼怪胸口,草人只是账房。玩家看到的扎针与真正发生的事隔着一层咒术的翻译,这层翻译就是咒怨系的全部魅力。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的爪子明明挥向了你,怎么落在自己脸上?夺舍的答案邪门到家:道士的魂钻进了狼怪的身子——占据三秒,这三秒里它每…
【游戏功能】 墙又不追人,怪为什么次次撞?水墙的定位写在物理里:它立在路中央六秒,是一块"会推人的地形"——狼怪巡逻的弧线扫…
【游戏功能】 左手五刀右手五刀,怎么就数得清是双刀?双刀交叉斩的答案在弧线上:左刀的弧向右扫,右刀的弧向左扫,两把刀的弧线在…
【游戏功能】 隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草…
【游戏功能】 雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶…
【游戏功能】 跑赢了的怪,怎么反倒挨了烧?火焰冲刺的账目反直觉就在这:冲刺是位移,火径是遗产——人冲过去了,路留在原地烧三秒…