我收到了很多反馈指出我的游戏(FEED THE AI)很有规律,玩起来也很舒服。
我觉得自己有很丰富的经验,于是觉得自己可以分享一下我如何实现这一效果的方法。这主要是分解一下实际发生的事情:当你击杀敌人并从中收集数据时。
一开始看来似乎很简单。你仅仅需要点击直到敌人死亡,然后当敌人死亡时,会有一颗粒从敌人飞向中间的宝珠。这就是全部了。
但在实际情况下,很多小细节都在周围做了很多事情, 让它听起来非常令人满意。多数情况都是使用粒子系统和 DoTween。DoTween在这里扮演了巨大的作用,因为只用了一条代码就可以让事情听起来很有生命力。对于粒子,我使用了一个叫 Toon FX 的资源包作为基础,而且我知道如何调整它来适应我的要求。
有趣的是,我大量使用粒子系统因为我无法画画lol
-
击打方块
- 我有一个宝珠,它能在一定范围内击中敌人,宝珠周围有一圈简单的圆形图像来表示这种情况。
- 宝珠上有一个粒子系统,它完美匹配圆形图像并在攻击时填满它。
- 当我们攻击时,如果没有击中任何敌人会播放一个攻击音效,击中敌人时会播放另一个音效。这很重要。因为如果我们每击中一个敌人而不是每次攻击时都播放音效,会有重叠的音效,听起来很糟糕。
- 我们有一个画布,画布上有一个加载图像,展示攻击冷却时间。
-
当我们击中敌人时,四件事情都会发生
-
敌人的血量减少,当查看这个效果时会改变一个着色器参数
- 使用 DoTween 的震荡效果,让敌人轻微晃动一番,这是一行代码就可以实现
- 用一个向量来计算宝珠与敌人之间的距离,然后使用 rb.AddForce()函数轻微推送敌人
- 在敌人上方生成一条浮动伤害文本(当你处理大量文本时,最好将它们放在同一个画布上,以避免过多的绘制调用)
-
当敌人死亡时,三件事情会发生
- 敌人被销毁
- 生成一颗死亡粒子,随后迅速消失(持续时间:0.2-0.4秒)
- 生成一个数据粒子,而数据粒子会飞向中间的宝珠。这个粒子系统从宝珠移动到中间的orb,它不仅仅在orb之间lerp,而是在这个粒子的移动过程中我应用了Perlin Noise。这颗粒子会发射随机旋转的方块,也会有随机的生命时间。在你击杀两个或更多个敌人时(在时间相同),数据粒子会随着不同时间到达中间的orb。
-
当数据粒子撞击宝珠时,会发生 6 件事情
- 数据粒子会消失
- 运行随机音调的的数据聚集 SFX(特殊音效)
- 周围会产生一个差异很小的花星粒子
- 另外一个粒子系统会发射一个小方块来追踪宝珠(持续一段时间)
- 宝珠会进行一些微小的变化,它就像弹簧一样。当粒子往宝珠飞去时,会拉一下宝珠,然后在代码上center宝珠
- 回收数额和经验会更新,而且经验会通过多种方式体现出来
-
当经验值被更新
- 宝珠周围的条形状会填满,但是不是一个直线状,它也使用弹簧效果表现出充满的过程
- 宝珠会在经验值每次增加时轻微膨胀
- 宝珠周围的白色方块粒子数量会增加
- 这些粒子所走的速度会增加,这样可以更好地填满到宝珠周围
-
当 AI 的层级发生变化
- 所有的宝珠粒子都会消失
- 发射一个大型白色爆炸粒子到宝珠上
- 整个场景上的一个波动粒子系统会被触发
- 整个场景都会被充满光芒
- 之后,宝珠的积分都会重置并从基础值开始计算
这下长得似乎看起来很吓人 xD希望这对某个人能够改善他们自己的游戏感受。
简而言之,
- 使得所有东西对用户的操作做出反应(就是说每个动作都必须做出响应)。
- 让它们听起来像弹簧一样,听起来很硬很刚好。
- 就算某个效果几乎看不见,它也仍然可能对整个体验影响深远。
- 是很多小事,而不是几个大事。
让 DoTween 成为你的朋友。它是最棒的插件之一。
号码列表有破。不是我修好它的耐心。
最终(TL;DR)
评论 (0)