【游戏功能】
一、一个永远差一步的跳台
蓄力跳台玩法首版,玩家的抱怨高度一致:"按半秒和按三秒跳得一样远,那蓄力条是装饰吗?"蓄力条的视觉做得很用心——进度条、人物下蹲压缩、蓄满变色,一样不少。唯独起跳的力道没跟蓄力挂钩,弹簧的劲系数是写死的。蓄力跳玩法的全部玩法就是"蓄力多久"这一个决策,决策不影响结果,玩法即死。
二、机制原理:蓄力、起跳、落点
蓄力跳的三个参数互相咬合。蓄力时长:按住的时间折算成零到一的蓄力比例,人物下蹲压缩做视觉预告——蹲得越深跳得越远。起跳初速:纵向初速决定高度和滞空,横向初速决定远度,两者都按蓄力比例放大。落点判定:落点横坐标落在目标桩头的宽度区间内即算站上,区间外落回地面重来。桩头的宽度递减、间距递增,难度自然爬坡。
fx-jump
三、正确写法:蓄力跳(幂尔版)
local ChargeJump = {}
local CONST = { MSG_ID = 12290, KEY = "ChargeJump", GRAVITY = 900, MAX_CHG = 1.1 }
-- 按下: 进入蓄力
function ChargeJump.OnPressDown(myID)
ChargeJump._chg = 0
ChargeJump._charging = true
ChargeJump._myID = myID
end
-- 松手: 按蓄力比例起跳
function ChargeJump.OnPressUp()
if not ChargeJump._charging then return end
ChargeJump._charging = false
local p = math.min(1, ChargeJump._chg / CONST.MAX_CHG)
ChargeJump._vx = 150 + p * 260
ChargeJump._vy = -(420 + p * 160)
ChargeJump._flying = true
end
function ChargeJump:Update(dt)
if self._charging then
self._chg = math.min(CONST.MAX_CHG, self._chg + dt)
self._crouch = math.min(14, self._chg * 16) -- 下蹲压缩做视觉预告
return
end
if not self._flying then return end
self._vy = self._vy + CONST.GRAVITY * dt
self._x = self._x + self._vx * dt
self._y = self._y + self._vy * dt
for _, p in ipairs(self._pillars) do
if self._vy > 0 and math.abs(self._x - p.x) <= p.w / 2 and self._y >= p.top then
self._flying = false
self._y = p.top
self._score = self._score + 1 -- 站上桩头
SL:ShowSystemTips("跳上桩头 " .. self._score)
return
end
end
if self._y >= GROUND then self:_FallToGround() end -- 落空重来
end
return ChargeJump
四、四个必须钉死的细节
五、心法:一个决策的玩法也成立
蓄力跳证明:完整的玩法可以只含一个决策。按住的时长是唯一变量,视觉、判定、难度全部围绕它生长。小而深的单决策玩法,比大而浅的多系统堆叠更适合手游的碎片时间——决策一个,乐趣一条,够了。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 一、一次裸眼抓哑巴的潜行 烟幕弹玩法首版测试,玩家丢完烟幕就站在烟里发呆,怪在烟边上转圈也不进来——表现对了,…
【游戏功能】 一、一个震了个寂寞的大招 跺地震波类技能首版,特效华丽、震屏到位,测试却打回:"这大招怎么只炸了一下就没了?"…
【游戏功能】 一、一个卡进墙里的箱子 推箱谜题移植首版,测试发现一个无解局面:箱子被推到墙角,四个方向都推不动,谜题卡死只能…
【游戏功能】 一、一个永远差一口气的接线 星轨接电类旋转解谜首版,测试卡在第三关:四段线路怎么转都差一口气,明明视觉上头尾相…
【游戏功能】 一、一个被风卷走的判空 龙卷风聚怪技能首测,最灵异的 bug:怪被吸到风眼附近后集体"抽搐"——坐标每帧在风眼…
【游戏功能】 一、一个只闪不中的斩击 斩钢闪类突进斩首版被吐槽"人过去了刀没过去"——突进的位移做了,斩击的刀痕却只在终点画…