【游戏功能】
一、先抛一个坑
风墙为什么值得单独讲?因为它不是伤害技能——它是一个"否定"技能。风墙的效果是把敌人的弹道挡住,不造成伤害不产生治疗,它的全部价值就是"让某些事情不发生"。否定类技能的表现设计是表现系统的盲区:怎么让玩家一眼看出"这条路被堵了"?答案是用运动的方向感——三层弧线气流从地面涌向天空,气流的"向上运动"暗示了"阻挡"的语义。
二、底层原理
风墙的视觉由三层弧线气流构成,每层用不同粗细和透明度的弧线沿竖直方向绘制,弧线带正弦波动模拟气流的飘动。持续四秒后渐隐消散。在幂尔框架里,SL:Schedule 驱动风墙的持续时间和消散动画,SL:GetValue 读施法者坐标定位风墙位置。
fx-windwall
三、正确写法
local WindWall = {}
local CONST = { KEY = "WindWall", DURATION = 4 }
function WindWall.Cast(myID)
local myX = SL:GetValue("ACTOR_POSITION_X", myID)
local myY = SL:GetValue("ACTOR_POSITION_Y", myID)
WindWall._node = CreateWindWall(myX, myY, 200)
SL:SendLuaNetMsg(CONST.MSG_ID, 0, 0, 0,
SL:JsonEncode({ key = CONST.KEY, op = 1, actorID = myID }))
SL:ScheduleOnce(function()
WindWall._node:FadeOut(1.0)
SL:SendLuaNetMsg(CONST.MSG_ID, 0, 0, 0,
SL:JsonEncode({ key = CONST.KEY, op = 2 }))
end, CONST.DURATION * 1000)
end
return WindWall
四、四个必须钉死的细节
五、心法
否定类技能的表现设计要点是"用运动方向传递语义"——向上的气流暗示阻挡,向外的扩散暗示排斥,向内的收缩暗示吸收。运动的方向就是功能的说明书,玩家不需要读技能描述,看运动方向就知道这个技能在做什么。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 heat = heat + 1; if heat = 3 then rest = 1.6 ——两行管刀温的代码…
【游戏功能】 兄弟俩打一只狼,哥哥攒了三层劲自己放,一层加二十五;弟弟站在旁边干瞪眼——直到有人把劲递了过去:同样的三层,过…
【游戏功能】 有篇纠错单写得像小说:同一只狼,有人打它半小时血线稳如老狗,有人三分钟放倒——排查到最后发现,会打的那个从头到…
【游戏功能】 追着你满场跑的狼怪,为什么绕过一根石柱就懵在原地?脱影的答案藏在柱子背后:视线被石柱掐断一秒二,它脑子里"你"…
【游戏功能】 巡查群里有人喊邪门:同一套连招,昨天刀刀见血,今天刀刀被挡——查录像看到第三遍才看懂:狼怪学会了。他的出刀间隔…
【游戏功能】 if hand == last then acid = acid + 1 ——一行数手的判定,攒出了换手全部的…