【游戏】
一、业务场景:行会篝火在固定坐标点燃后全团聚集共享经验,玩家站太远没加成投诉 30 条;圆形范围判定——与篝火距离 15 格内的成员每 tick 获得 50 经验。
二、实现方案:
错误写法。示例代码如下:
local function onTick(actor)
setplayvar(actor, "EXP_ADD", 50) -- 不看距离,全图都有
end
正确写法。示例代码如下:
local FIRE = {x = 320, y = 280, r = 15}
local function onTick(actor)
local dx = getplayvar(actor, "X") - FIRE.x
local dy = getplayvar(actor, "Y") - FIRE.y
if dx * dx + dy * dy <= FIRE.r * FIRE.r then
setplayvar(actor, "EXP_ADD", 50) -- 圈内才有加成
end
end
三、边界处理:边界踩线按平方比较含等号判定,跨图成员坐标差直接超圈不参与。
四、引擎验证:10 人团 6 人近 4 人远,圈内 6 人每 tick 加 50 经验,圈外 4 人零加成,零误发。
五、FAQ:问:篝火熄灭后圈内还有加成吗?答:没有,篝火状态关闭时判定整体短路。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 一行定骨架:mask:setVisible(true) 先于一切加载动作。切图最怕"加载一半的半成品…
【游戏】 一、规则机制 线上事故:网络一抖直接踢回登录页,重新登录还要排队,火气全从这一脚踢出来。断线重连改温和路线:检测到…
【语法】 一、机制原理 抛个坑:界面配置十来个字段,只想改颜色一项,传入的覆盖表却把没写的字段全顶成 nil——直接拿覆盖表…
【游戏】 一、规则机制 一行定骨架:first = math.floor(offset / ROW_H)。千行列表建一千个节…
【语法】 一、机制原理 隐蔽的坑:给敏感词表去重,用了"排序后相邻比对"的老办法,重复是去掉了,原有优先级顺序也被打乱。去重…
【语法】 一、机制原理 隐蔽的坑:网格数据用 grid[x .. "_" .. y] 拼字符串键存取,写入顺手,可要遍历整张…