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