我在我的游戏(FEED THE AI)中收到很多反馈,称游戏的感觉非常完善和令人愉快,因此我想分解一下发生在一项非常简单的动作中的所有事情:攻击敌人,杀死它并收集数据。
tl;dr
让所有东西响应玩家的动作。
使其跳跃、响亮和反应。
通常不是一个大事,而是许多小事一起工作。
另外,与DOTween成为朋友,它是最好的插件之一。
深入解析:
初步看起来,交互方式很简单:球体击中一个方形的敌人,敌人死亡,一个数据粒子飞回球体。
但在背后,发生了更多的事情。
1. 攻击
- 球体有一个攻击范围,显示为一个简单的圆形精灵。
- 在那之上,我使用一个粒子系统来匹配圆形并在球体攻击时暂时填充它。
- 有两个SFX:一个用于攻击空气,一个用于击中东西。
- 击中声音每次攻击触发一次,而不是每次击中敌人,否则会变成重叠的混乱。
2. 当敌人被击中时
- 敌人HP通过着色器参数下降
- 敌人进行一个小的DOTween缩放抖动:
gfx.DOShakeScale(0.2f, 1); - 它被稍微推开
rb.AddForce() - 浮动的伤害文本出现在它上面
3. 当敌人死亡时
- 敌人被销毁
- 一段死亡粒子播放
- 一个数据粒子飞回球体
数据粒子不移动在一个完美的直线上。我使用Perlin Noise将其移动向球体,感觉更加有机。 我还随机化了其生命周期,以便多个粒子不会同时到达。
4. 当数据到达球体时
- 数据粒子被销毁
- 收集SFX播放,音调随机化
- 一段微小的爆炸粒子在球体周围发射
- 另一个小粒子在它周围旋转一会
- 球体被推开,然后重新中心像弹簧一样
- 金钱和进度更新
随机音调对于重复的声音非常重要。没有它,收集资源会很快变得令人恼火。
5. 当进度更新时
- 球体周围的进度条填充一个弹簧效果而不是线性动画
- 球体稍微膨胀
- 更多白色方形粒子出现在它周围
- 这些粒子随着你接近升级而加速
所以球体开始感觉越来越“充电”。
6. 当AI升级时
- 球体粒子被清除
- 一段大白色爆炸触发
- 一段微小的冲击波在整个关卡中发射
- 照明暂时充满屏幕
- 球体重置并开始重建
所以,玩家实际上只是击中方块并收集数据。
但感觉来自于堆叠许多小反应:粒子,声音,音调变化,震动,弹簧运动,着色器变化和时间。
希望这能帮助一些人在自己的项目中改进游戏感觉。
评论 (0)