CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

推币机:推出去的总比掉下来的多

2026-09-28 18:58 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

推币机的邪门之处在于:明明知道投出去的多、掉下来的少,手还是停不下来。这份"停不下来"是表现层的功劳——推板一进一退、币山层层叠叠、台沿摇摇欲坠的那几枚,每一秒都在给玩家画饼。今天拆推币机的表现层,看看"物理露出一点点"是怎么勾人的。

一、落币、推进、坠落三段循环

推币机的循环三段。落币段:硬币从顶部滑入台面,带着旋转落在币堆上,落点随机但集中在中间区域。推进段:紫色推板一进一退,前进时把整摞币往前顶,币与币之间层叠滑动——推板的行程就是节奏器,全场的动静跟着它走。坠落段:台沿的币被顶得摇摇欲坠,最终掉进奖池的瞬间金光一闪、计数跳一格。三段里最勾人的是台沿那几枚:它们半悬半挂,推板每前进一次都在生死线上晃——观众的眼睛会不自觉锁定台沿,这份锁定就是推币机的全部心机。表现要点:硬币用椭圆压扁画法模拟立起的币,层叠时上下错位半枚,币山的"厚度"才出得来。

完整演示在这,默认自动循环,可调落币速度:

demo
fx-coinpush

二、幂尔框架实现:推板行程与台沿判定

推板做三角波往复,台沿外的币转入坠落结算:

lua
local CoinPush = {}
local KEY = { TRAVEL = 34, EDGE = 560 }

function CoinPush.Tick(dt)
    -- 推板三角波
    local p = SL:GetValue("pusher")
    p.x = p.x + p.dir * 26 * dt
    if p.x >= SL:GetValue("pushBase") + KEY.TRAVEL then p.dir = -1 end
    if p.x <= SL:GetValue("pushBase") then p.dir = 1 end
    SL:SetFxPos("pusher", p.x, SL:GetValue("plateY"))
    -- 板面直接接触的币: 跟随板沿
    local plate = p.x + 36
    for _, c in ipairs(SL:GetValue("coins")) do
        if c.x < plate + 12 then
            c.x = plate + 12
        end
    end
    -- 台沿判定: 过线即坠落计奖
    for i = #SL:GetValue("coins"), 1, -1 do
        local c = SL:GetValue("coin", i)
        if c.x > KEY.EDGE then
            table.remove(SL:GetValue("coins"), i)
            SL:SetValue("won", SL:GetValue("won") + 1)
            SL:PlayBurst(KEY.EDGE, SL:GetValue("plateY") + 20, "gold", 5)
            SL:ShowSystemTips("坠入奖池! 共 " .. SL:GetValue("won"))
        end
    end
end

function CoinPush.DropCoin()
    -- 落币带随机横偏, 避免完美堆叠
    SL:PlayFlyFx("coin", 240 + math.random() * 40, 30,
                 240 + math.random() * 40, SL:GetValue("stackY"), 0.5,
                 { spin = 8 })
end

return CoinPush

DropCoin 里的随机横偏别省——完美堆叠的币山一眼假,歪一点才有"机器"味。

三、层叠厚度与奖池可视化

币山的层叠画法是这类演示的美术重心:每枚币压扁成椭圆、上下错位四像素、颜色随层数加深,三层以上币山自然显出体积。台沿摇摇欲坠的币要加一像素的抖动——那一点颤就是观众盯住不放的原因。奖池可视化别只给数字:池内的币画成实打实的一堆,掉一枚堆一枚,"赢到的"变成看得见的财产,比数字扎实十倍。

投币节奏也有讲究:匀速投币是流水账,节奏要做成"两快一慢"——连投两枚停一拍,币山在停顿里被推板消化,掉币往往就发生在这一拍。玩家摸不清规律又隐约觉得有规律,这就是推币机的迷人之处。最后,推板行程的终点要有一声闷响加一次极轻微的整机震动——推到头的那一下顿挫,是整台机器的心跳。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

回春:一层温火慢慢焐,血是焐回来的

【游戏功能】 治疗术的流派里吵了几十年的架:瞬发治疗保当下,持续回血养节奏——回春术是后一派的掌门。回春的机制是一层温火:焐…

2026-09-30 19:56 996 技术组
进阶实战游戏功能

均衡:把血多的匀给血少的

【游戏功能】 血条的分配学里有个扎心的现象:满血的人和一丝血的人站在同一道箭雨里,狼怪的爪子永远优先够着后者——血量不均是队…

2026-09-30 19:56 996 技术组
进阶实战游戏功能

游走符:一边走一边念,慢是慢了点

【游戏功能】 隐蔽的报错单上写着一行怪数据:同一个技能,伤害记录在六十三和四十四之间跳——查了半天配置表,两套数值都"没配错…

2026-09-30 19:56 996 技术组
进阶实战游戏功能

溢疗:多出来的奶变成盾

【游戏功能】 治疗量的统计表上有一栏常年被无视:溢出治疗——奶到满血之后白白流掉的那部分。溢疗的机制把这栏捡了回来:满血再奶…

2026-09-30 19:56 996 技术组
进阶实战游戏功能

聚怪:一声令下怪挤成一团,一符全收

【游戏功能】 群攻技能的尴尬人人都懂:三只狼站得东一只西一只,六百点的群符砸下去只烧到一只——剩下两只在火圈外看得清清楚楚。…

2026-09-30 19:56 996 技术组
进阶实战游戏功能

压哨:符烧尽的最后一刻落刀,账翻倍

【游戏功能】 if seal.t <= 0.4 then dmg = dmg 2 ——一行卡着符印尾巴翻倍的判定,养出了压哨…

2026-09-30 19:56 996 技术组