被祖玛卫士抡一下和被烈火剑法劈中,屏幕反应应该不一样。镜头震动分级方案:轻受击微震两帧、重击中幅震动、爆炸大震带衰减,震动强度与伤害档位挂钩,打击感的收尾一环补齐。
震动按伤害档位取幅度与时长,大震带指数衰减,避免匀速抖动的机械感。actor伤害值由服务端同步,前端只管演出。
local function shakeCamera(dmg)
local tier = 1
if dmg >= 500 then tier = 3
elseif dmg >= 200 then tier = 2 end
local amp = tier * 3
SL:Schedule(function()
amp = amp * 0.85
if amp < 0.5 then amp = 0 end
local ox = (math.random() - 0.5) * 2 * amp
local oy = (math.random() - 0.5) * 2 * amp
GUI:setPosition(sceneRoot, ox, oy)
end, 0.03)
end
密集受击时震动请求合并:每百毫秒只响应最高档位的一次,拒绝震动风暴。
local lastShake, pendingTier = 0, 0
local function requestShake(dmg)
local tier = math.min(3, math.ceil(dmg / 200))
if os.clock() - lastShake < 0.1 then
pendingTier = math.max(pendingTier, tier)
return
end
lastShake = os.clock()
shakeCamera(tier * 200)
end
三档伤害各触发二十次验证幅度与衰减曲线;密集受击验证合并节流生效。埋点震动开关的关闭率,关闭率超过两成说明默认幅度过猛,先降档再观察。
sceneRoot的位置被震动直接改写,镜头系统若也操作同一路径会互相打架,震动改用偏移子节点承载。Schedule的句柄在震动结束时要取消,残留回调让屏幕永远微抖。眩晕类控制技能期间的震动要屏蔽,又晕又震是晕车制造机。伤害数值波动大时档位跳变生硬,档位间加渐变过渡帧,震动曲线比档位数字更重要。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…