下载 App
开发日志 #3:四种 Buff 的手感调校
修改于10/2010 浏览
核心循环跑通之后,我开始想怎么让每一局有变化。如果每局都是同样的射击节奏,玩家很快就会进入机械操作。于是有了 buff 系统。
我一共做了四种 buff:近战、迅捷、精准、散射。名字听起来很普通,但每一种在代码层面的实现方式完全不同,手感也差异很大。
近战(MELEE) 的效果不是缩短射程,而是延长子弹的存活时间。普通子弹在生命周期结束后会直接销毁,但近战状态下,子弹会多飞一段距离。实际手感是“子弹能打到更远的地方”,配合近战主题,有点像把射击变成了一种范围压制。
精准(PRECISE) 的实现更直接:我让所有子弹的 X 坐标强制对齐到枪口的一个标记点。普通状态下子弹是从手部位置散射出去的,精准状态下全部从同一个精确坐标射出,散布极小。这个改动的体感非常明显,玩家会立刻觉得“指哪打哪”。
迅捷(SWIFT) 和 散射(FAN) 分别改变射击频率和子弹数量。迅捷让射击间隔缩短,散射让一次射出多颗子弹。这两个 buff 在 UI 上显示为 RAPID 和 SPREAD,和另外两个一样,都通过翻译函数接入本地化。
buff 不是永久生效的。每个 buff 有独立计时器,UI 上实时显示剩余秒数。倒计时归零后自动移除。这个设计是为了让玩家不能一直停留在同一种战斗节奏里,必须根据当前 buff 调整走位和射击方式。
在实现上,我用 StringName 来存储当前 buff,而不是枚举。这样比较速度快,同时后续如果想通过外部数据动态添加 buff,不需要改枚举定义。buff 的获取、计时、移除都集中在游戏主循环里,子弹和敌人脚本只负责读取当前 buff 状态并改变自己的行为。这种分层让后面加多命和排行榜时省了很多事。
四种 buff 调完之后,游戏的变化感明显上来了。同一张地图,不同 buff 组合下玩起来像两个游戏。下一篇会讲多命机制,以及 UI 和音频是怎么在这个阶段成型的。












